1. Einleitung

Insgesamt gibt es ca. 6500 bis 7000 Sprachen auf der Welt. Etwa die Hälfte der Erdbevölkerung sprechen eine der 10 meistgesprochenen Sprachen. Die sind Mandarin-Chinesisch, Englisch, Spanisch, Hindi, Arabisch, Portugiesisch, Bengali, Russisch, Japanisch und Deutsch.

Verschiedene Sprachen haben verschiedene Wortstellungsmöglichkeiten, zum Beispiel ist die Wortfolge auf Deutsch Subjekt-Verb-Objekt, wie im Satz “Ich koche Suppe.”, auf Japanisch ist die Wortfolge von diesem Satz jedoch Subjekt-Objekt-Verb:

Watashi wa su-pu wo tsukuru Ich Suppe kochen

Verschiedene Sprachen haben verschiedene Wortstellungsmöglichkeiten in Nominalphrasen, zum Beispiel die Wortstellung von Adjektiven und Nomen in Nominalphrasen. In Deutschen ist das Adjektiv vor dem Nomen, wie in der Nominalphrase “das feuchte Holz”, aber in Französischen kann das Nomen vor dem Adjektiv gestellt wird:

le bois humide das Holz feuchte

Jedoch kann man nicht sagen, dass die Sprachen auf der Welt keine Gemeinsamkeiten haben. Denn alle Sprachen haben Wörter und Sätze, Wörter werden aus elementaren bedeutungslosen Lauten oder Gesten gebildet, alle Sprachen haben komplexe morphologische und/oder syntaktische Strukturen, alle Sprachen haben Frageausdrücke und Verneinungsausdrücke usw.

Es lassen sich oft universale Behauptungen nur aufstellen, wenn eine weitere Bedingung erfüllt ist: Implikationsuniversalien (vgl.Croft 2002). “Wenn eine Sprache L die Eigenschaft A hat, dann hat sie auch die Eigenschaft B”

Beispielsweise “Wenn eine Sprache ein [f] Laut hat, dann hat sie auch ein [s] Laut; Wenn in einer Sprache das Objekt dem Verb vorangeht”Der Hund die Katze jagt“, dann steht auch der Besitzer vor dem Besitz”des Hundes Hütte“.

Nach dieser Theorie wird in dieser empirischen Arbeit den Zusammenhangen zwischen den Wortfolgen im Satz und den Wortstellungen in Nominalphrasen von den erhobenen 26 Sprachen untersucht, ob es nach dieser Theorie auch Ausnahme gibt und ob diese Zusammenhangen nach Statistik signifikant sind.

Diese Arbeit wird mit Statistik “R” geschrieben und alle Daten werden in “R” eingelesen und ausgewertet. Die Karten für die Übersichten von verschiedene Themen der erhobenen Sprachen werden mit “R” dargestellt.

2. Eigene empirische Arbeit

Um den Zusammenhangen zwischen der Wortfolge im Satz und den Wortstellungen in Nominalphrasen in der Sprache herauszufinden, wurde einen Fragebogen mit 10-deutschen Sätzen an verschiedene Muttersprachler gegeben. Von Dezember 2017 bis Ende Februar 2018 wurden insgesamt 25 Fragebogen von Informanten zurückbekommen. Mit diesen 26 Sprachen (inklusiv Deutsch) werden die Implikationsuniversalien genau angeschaut.

2.1 Überlegungen zur Wahl der Informanten und Sprachen

Die Überlegungen zur Wahl der Personen war, dass wir nur die Muttersprachler suchen. Denn die L2-Leaner sind meistens unsicher und brauchen Lehrbücher oder Wörterbuch, um den Übersetzungsbögen ins anderen Sprachen zu übersetzen. Aber Muttersprachler können meistens die passenden Ausdrücken in ihrer Muttersprache besser finden.

Es ist beim Erheben optimal, wenn man die Sprachen von vielen Sprachfamilien als Quellen bekommen kann, am besten auch ein paar isolierte Sprachen oder die Sprachen mit wenige Sprecher dabei könnten. Die insgesamt erhobenen Sprachen sind: Deutsch, Englisch, Niederländisch, Französisch, Italienisch, Griechisch, Portugiesisch, Polnisch, Russisch, Ukrainisch, Rumänisch, Armenisch, Türkisch, Tigrinja, Hindi, Vietnamesisch, Indonesisch, Kroatisch, Georgisch, Berber, Persisch und Spanisch von Mexiko.

Obwohl es nur 26 Sprachen erhoben wurde, aber diese Sprachen sind gut auf den Sprachfamilien geteilt. Es gibt nicht nur Indoeuropäische Sprachen wie Deutsch, Englisch, Niederländisch, Französisch, Spanisch, Italienisch, Griechisch, Portugiesisch, Polnisch, Russisch, Ukrainisch, Rumänisch, Hindi, Kroatisch und Persisch, sondern auch die isolierten Sprachen wie Koreanisch, Japanisch und Chinesisch. Außerdem sind die Altaische Sprachen wie Türkisch, Afroasiatische Sprachen wie Tigrinja und Berber, Sinotibetische Sprachen wie Kantonesisch, Austroasiatische Sprache wie Vietnamesisch, Austronesisch wie Indonesisch und Südkaukasische Sprachen wie Georgisch (vgl. Wals.info).

Im Folgenden werden die Daten von den erhobenen Sprachen in “R” eingelesen und schließlich wird eine Karte für eine Übersicht der erhobenen Sprachen mit diesen Daten dargestellt.

Die Analyse von den erhobenen Sprachen ist als “Umfragedaten.csv” unter Ordner “sources” gespeichert. Hier wird es mit “read.csv()” in R eingelesen und als “Daten” genannt. Mit der Funktion “summary()” kann man die Strukturen von der Datei anschauen.

Daten <- read.csv ("//Users/verawei/Desktop/HA Sprachtypologie/sources/Umfragedaten.csv"
                    , header = TRUE
                   , sep = ";")
summary(Daten)
        Sprache                 Land        Gattung              Familie  
 Armenisch  : 1   China           : 2   Romance : 5   Indoeuropäisch :16  
 Berber     : 1   Iran            : 2   Slavic  : 4   Afroasiatisch  : 2  
 Chinesisch : 1   Deutschland     : 1   Germanic: 3   Altaisch       : 1  
 Deutsch    : 1   England         : 1   Armenian: 1   Austroasiatisch: 1  
 Englisch   : 1   Ethiopia Eritrea: 1   Berber  : 1   Austronesisch  : 1  
 Französisch: 1   Frankreich      : 1   Chinese : 1   Chinesisch     : 1  
 (Other)    :20   (Other)         :18   (Other) :11   (Other)        : 4  
    Latitude       Longitude      Wortfolge          Adjektiv.Nomen
 Min.   : 0.00   Min.   :-99.38   SOV: 6    Adj+N           :17    
 1st Qu.:32.17   1st Qu.: 10.50   SVO:20    N+Adj           : 7    
 Median :39.00   Median : 34.00             No domiant order: 2    
 Mean   :36.66   Mean   : 41.68                                    
 3rd Qu.:47.50   3rd Qu.: 71.25                                    
 Max.   :56.00   Max.   :140.00                                    
                                                                   
     Musik.Mozart    Artikel.Nomen Farbe.Nomen Numeral.Nomen    Artikel.Farbe
 MoMu      : 9    DET+N     :23    Fa+N:18     Num+N:26      DET+Fa    :18   
 MuMo      :15    N+DET     : 2    N+Fa: 8                   Fa+DET    : 1   
 nicht klar: 2    nicht klar: 1                              nicht klar: 7   
                                                                             
                                                                             
                                                                             
                                                                             
   Artikel.Numeral   Artikel.Adjektiv Farbe.Adjektiv Adjektiv.Adjektiv.Umfang
 DET+Num   :21     Adj+DET   : 2      Adj+Fa:20      Adj-U+Adj : 8           
 nicht klar: 1     DET+Adj   :22      Fa+Adj: 6      Adj+Adj-U :16           
 Num+DET   : 4     nicht klar: 2                     nicht klar: 2           
                                                                             
                                                                             
                                                                             
                                                                             

Mit der Darstellung kann man die Strukturen von der Analysedatei klar verstehen. Der erste Spalt von der Datei sind die 26 erhobenen Sprachen und das erste Ziel von der Datei sind die 17 Verteilungen: “Sprache”, “Land”, “Gattung”, “Familie”, “Latitude”, “Longitude”, “Wortfolge”, “Adjektiv + Nomen”, “Musik + Mozart”, “Artikel + Nomen”, “Farbe + Nomen”, “Numerale + Nomen”, “Artikel + Farbe”, “Artikel + Numerale”, “Artikel + Adjektiv”, “Farbe + Adjektiv” und “Adjektiv + Adjektiv_Umfang”.

Karte 1: Übersicht der erhobenen Sprachen

In der Karte 1 werden alle erhobenen Sprachen nach ihrer Räumlichkeit auf der Weltkarte dargestellt. Die Karte 1 zeigt, dass die erhobene Sprachen gut auf der ganzen Welt geteilt sind. Die meisten Sprachen sind europäische Sprachen, aber asiatische und afrikanische Sprachen sind auch dabei.

library(maps)
map("world", interior=FALSE, col="grey", resolution=0)
points(Daten$Longitude, Daten$Latitude
       , col = "red"
       , cex =.7
       , pch = 20)
title (main = "Übersicht der erhobenen Sprachen ")

Karte 2: Übersicht der erhobenen Sprachen nach der Sprachfamilie

In Folgender Karte 2 werden diese erhobenen Sprachen nach ihrer Sprachfamilie dargestellt. Mit dieser Darstellung kann man einen besseren Überblick über die Sprachen und ihre zusammengehörige Sprachfamilie bekommen. Die erhobenen Sprachen sind gut auf den Sprachfamilien geteilt.

table(Daten$Familie)

  Afroasiatisch        Altaisch Austroasiatisch   Austronesisch      Chinesisch 
              2               1               1               1               1 
 Indoeuropäisch       Japanisch      Koreanisch   Sinotibetisch   Südkaukasisch 
             16               1               1               1               1 

Mit der Funktion “table()” bekommt man die Verteilung der Datei in “R”. Es zeigt, dass es insgesamt 16 Indoeuropäische Sprachen und zwei Afroasiatische Sprachen gibt. Außerdem sind die Sprachfamilie Südkaukasische Sprachen, Altaische Sprachen, Austroasiatische Sprachen, Austronesische Sprache, Sinotibetische Sprachen, Chinesisch, Japanisch und Koreanisch auch dabei. Darüber hinaus kann man sagen, dass die erhobenen 26 Sprachen sehr vielfältig sind.

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("darkgreen", "blue", "yellowgreen", "gold", "purple", "red", "deepskyblue2", "darkblue", "darkorchid1", "green3")
mycols <- cols[Daten$Familie]
mysymbols <- c(20, 20, 20, 20, 20, 20, 20, 20, 20, 20)
Sprachefamilie <- mysymbols[Daten$Familie]
myname <- c("Afroasiatisch", "Altaisch", "Austroasiatisch", "Austronesisch", "Chinesisch", "Indoeuropäisch", "Japanisch", "Koreanisch", "Sinotibetisch", "Südkaukasisch")
points(Daten$Longitude, Daten$Latitude
       , pch = Sprachefamilie
       , col = mycols
       )
title(main = "Übersicht der erhobenen Sprachen nach der Sprachfamilie")
legend ("bottomleft"
        , legend = myname
        , pch = Sprachefamilie
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Um die Struktur von den Sprachen mit Farben darzustellen, habe ich zuerst mit der Funktion “table()” die Struktur von der Sprachfamilie angeschaut. Sodass ich die richtige Reihfolge von den Sprachen mit passenden Farben einordnen konnte. Die Auswahl von Farben für die Karte ist schwierig. Eine Seite sollten die näh zusammengehörige Sprachfamilie eine ähnliche Farbe bekommen, andere Seite sollten die Ortspunkte von Sprachen gut auffällig sind.

2.2 Übersetzungssätzen

Dieser Übersetzungsbogen wurde von mir und zwei weiteren Studentinnen zusammengestellt. Mit diesem Übersetzungsbogen möchten wir herausfinden, wie bestimmte Sätze in verschiedene Sprachen aufgebaut sind, wie Superlativ und Modalpartikeln. Daher enthält der Übersetzungsbog folgende Zehn Sätze:

  1. Ich koche Suppe.
  2. Der Bäcker backt ja das Brot am schnellsten.
  3. Die Schüler hören am liebsten Musik von Mozart.
  4. Die Touristen sehen diese fünf großen Häuser.
  5. Die Kinder werfen doch einen schönen großen roten Ball.
  6. Was machst du denn?
  7. Du hast eben nicht genug gelernt!
  8. Tim wirft den Ball am weitesten.
  9. Kleine Hunde bellen aber am lautesten.
  10. Das feuchte Holz verbrennt am schlechtesten.

Ich interessiere mich über den Zusammenhang zwischen den Wortfolgen und den Wortstellungen in Nominalphrasen der Sprachen. Für meine Analyse sind nur folgende Satzteilen relevant:

  • vom ersten Satz: Ich koche Suppe. [Subjekt + Verb + Objekt]
  • vom dritten Satz: Musik von Mozart [ Nomen + Nomen]
  • vom vierten Satz: diese fünf großen Häuser [DET + Num + Adj-Umfang + N]
  • vom fünften Satz: einen schönen großen roten Ball [ ART + Adj + Adj-Umfang + Farbe + N]
  • vom neunten Satz: kleine Hunde [Adj + N]
  • vom zehnten Satz: das feuchte Holz [DET + Adj + N]

Mit dem Satz 1 möchte ich die Wortfolgen im Satz von der Sprache festzustellen. Leider gibt es viele Sprachen, wenn der Subjekt im Satz “ich” ist, fällt den Subjekt weg und wird mit der Endung von Verb markiert. Daher habe ich die Wortfolgen von der Sprache immer auf alle gefragte zehn Sätzen berücksichtigt.

Mit Phrase “Musik von Mozart” wird die Genitiv-Nomen-Reihenfolge analysiert, damit wird die Reihenfolge für Genitiv-Nomen oder Nomen-Genitiv in der Sprache festgestellt. Mit den Satzteilen von Sätzen 4, 5, 9, 10 werden die Reihenfolgen von verschiedenen Elementen in der Nominalphrase der erhobenen Sprachen festgestellt.

Außerdem sind die Nominalphrasen von Sätzen 3, 4 und 5 den Direktobjekt, aber im Satz 9 und 10 sind die Nominalphrasen das Subjekt. Durch die Analyse von den erhobenen Sprachen zeigt es keine Unterschieden von der Wortstellung in Nominalphrasen von diesen fünf Sätzen (sehen Sie Daten von “Umfrage Analyse.xlsx”).

2.3 Methode und Ablauf

Die meisten Informanten sind meine Arbeitskollegen, Freunde oder Kommilitonen. Durch persönliche Gespräche, E-Mails und Nachtrichten von Facebook habe ich sie als Informanten gewonnen. Die Übersetzungsbogen sind entweder in ausgedrückten Papierformen an Informanten persönlich gegeben, oder als Word- und PDF-Datei an Informanten per E-Mail erreichtet. Die Informanten haben durchschnittlich ca. eine Woche gebraucht, bis sie mir die Übersetzungen zurückgeben.

Die Sprachen, wie Kroatisch, Armenisch und Rumänisch, hatten die Informanten weiterhin ihre Freunde für die Fragebogen geleitet. Zusammenfassende kann man sagen, dass Enkodierung der Informanten nicht sehr schwierig war. Denn sie sind sehr motiviert, ihre Muttersprache zu andren weiter zu erklären und die Unterschieden zwischen ihre Muttersprache und Deutsch besser zu erkennen.

Die Umfragebogen “Umfrage Studie Sprachtypologie” ist unten Ordner “Umfrage” zu finden. Außerdem sind noch 22 erhobene Umfragebogen auch in demselben Ordner zu finden.

3. Ergebnisse der Umfrage

Die Ergebnisse der Umfragesätze sind zuerst nach Sprache analysiert. Die Wortfolge in Sätzen und die Wortstellung im Nominalphrasen sind nach jeder Sprache sehr genau berücksichtigt. Die Ergebnisse sind als Excel-Datei “Umfrage Analyse” unter Ordner sources zu finden.

Für die Analyse in R wird die Excel-Datei “Daten_Umfrage” genutzt. In dieser Analyse sind Sprache nach Land, Gattung und Familie zuerst geachtet. Außerdem sind Longitude und Latitude von der Sprache nach Wals.info für das Erstellen der Karte geachtet. Die Analyse von Daten sind außer Wortfolge unter sehr viele kleine Elementpaare geteilt, wie “Adjektiv + Nomen”, “Musik + Mozart”, “Artikel + Nomen”, “Farbe + Nomen”, “Numerale + Nomen”, “Artikel + Farbe”, “Artikel + Numerale”, “Artikel + Adjektiv”, “Farbe + Adjektiv” und “Adjektiv + Adjektiv-Umfrang”.

Im Folgenden werden nicht nur die Verteilung der Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen in Weltkarte dargestellt, sondern auch die Wortstellungen in Nominalphrasen und die Reihenfolge von verschiedenen Arten der Adjektive in Nominalphrase der erhobenen Sprachen.

3.1 Die Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen

Für die Wortfolgen von Subjekt, Objekt und Verb werden nicht nur nach dem Satz 1 “Ich koche Suppe” festgestellt, sondern auch alle weitere neun Sätze von Umfragebogen.

Karte 3: Die Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen

table(Daten$Wortfolge)

SOV SVO 
  6  20 

Mit der Funktion “table()” können wir die Verteilung der Wortfolge von der erhobenen Sprachen sehen. In diesen Sprachen gibt es insgesamt sechs Sprache, die “Subjekt-Objekt-Verb (SOV)” Wortfolge haben und insgesamt 20 Sprache, die “Subjekt-Verb-Objekt (SVO)” Wortfolge haben.

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red")
mycols <- cols[Daten$Wortfolge]
mysymbols <- c(20, 20)
Wortfolge <- mysymbols[Daten$Wortfolge]
freq <- table(Daten$Wortfolge)
myname <- c(
      paste0("SOV-Sprache (", freq[1], ")")
    , paste0("SVO-Sprache (", freq[2], ")")
    )
points(Daten$Longitude, Daten$Latitude
       , pch = Wortfolge
       , col = mycols)
title(main = "Die Wortfolge von Subjekt, Objekt und Verb 
der erhobenen Sprachen")
legend ("bottomleft"
        , legend = myname
        , pch = Wortfolge
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Auf der Karte 3 “Die Wortfolge von Subjekt, Objekt und Verb der erhobenen Sprachen” sind alle 6 SOV-Sprache in blauen Pünktchen und alle 20 SVO-Sprache in roten Pünktchen auf der Weltkarte geteilt. Diese Karte gibt man einen guten Überblick über die Verteilung von Wortfolge von allen erhobenen Sprachen.

3.2 Die Wortstellungen in Nominalphrasen der erhobenen Sprachen

Die Wortstellungen in Nominalphrasen werden die Elemente immer im Pärchen vergleicht und dargestellt: die Reihenfolge von Adjektiv und Nomen in Nominalphrase, die Reihenfolge von Artikel und Nomen in Nominalphrase, die Reihenfolge von Farbe und Nomen in Nominalphrase, die Reihenfolge von Numerale und Nomen in Nominalphrase und die Reihenfolge von Genitiv und Nomen in Nominalphrase.

Außerdem werden die Wortstellungen von den verschiedenen Arten der Adjektive in Nominalphrase auch dargestellt: die Reihenfolge von Artikel und Farbe, die Reihenfolge von Artikel und Numerale, die Reihenfolge von Artikel und Adjektiv, die Reihenfolge von Farbe und Adjektiv und die Reihenfolge von Adjektiv und Umfangsadjektiv in Nominalphrasen.

3.2.1 Die Reihenfolge von Adjektiv und Nomen in Nominalphrase

Um die Reihenfolge von Adjektiv und Nomen von den erhobenen Sprachen festzulegen, wurden diesen Satzteilen berücksichtigt: “große Häuser”, “schönen großen Ball”, “kleine Hunde” und “feuchtes Holz”. Nur wenn die Reihenfolge von Adjektiv und Nomen in diesen vier Satzteilen identisch sind, wurde die Reihenfolge von Adjektiv und Nomen in Nominalphrase der Sprache bestimmt.

table(Daten$Adjektiv.Nomen)

           Adj+N            N+Adj No domiant order 
              17                7                2 

Mit Funktion “table()” sehen wir, dass insgesamt 17 Sprachen eine Reihenfolge “Adjektiv vor dem Nomen” in Nominalphrase haben, und 7 Sprachen eine Reihenfolgen “Nomen vor dem Adjektiv” in Nominalphrase haben. Außerdem gibt es zwei Sprachen, nämlich Französisch und Indonesisch, keine dominante Reihenfolge von Adjektiv und Nomen in Nominalphrase.

Karte 4: Die Reihenfolge von Adjektiv und Nomen in Nominalphrase

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue", "green3")
mycols1 <- cols[Daten$Adjektiv.Nomen]
mysymbols <- c(20, 20, 20)
AdjNon <- mysymbols[Daten$Adjektiv.Nomen]
myname <- c("Adjektiv vor Nomen (17)", "Nomen vor Adjektiv (7)", "Beides (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = AdjNon
       , col = mycols1)
title(main = "Die Reihenfolge von Adjektiv und Nomen in Nominalphrase")
legend ("bottomleft"
        , legend = myname
        , pch = AdjNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Auf der Karte 4 “Die Reihenfolge von Adjektiv und Nomen in Nominalphrase” werden die 17 Sprachen mit der Reihenfolge “Adjektiv vor Nomen” in roten Pünktchen markiert und 7 Sprachen mit der Reihenfolge “Nomen vor Adjektiv” in blauen Pünktchen markiert. Mit grünen Pünktchen sind die Französischen und Indonesischen markiert.

In Französisch sind die Reihenfolge von Adjektiv und Nomen in Nominalphrase nicht immer gleich, wie zum Beispiel: - Artikel + Adjektiv + Nomen (als Subjekt) - les petits chiens - die kleinen Hunde

  • Artikel + Nomen + Adjektiv (als Subjekt)
  • le bois humide
  • das Holz feuchte

In Indonesischen wechselt sich die Reihenfolge von Adjektiv und Nomen in Nominalphrase auch immer wieder, beispielsweise: - Nomen + Adjektiv + Artikel - rumah besar ini - Häuser groß das

  • Adjektiv + Nomen
  • kecil anjing
  • klein Hund

Dadurch dass die Reihenfolge von Adjektiv und Nomen in Nominalphrase für Französischen und Indonesischen beides möglich ist, wurden den Typ dieser Reihenfolge hier als “Beides” auf der Karte gestellt.

3.2.2 Die Reihenfolge von Artikel und Nomen in Nominalphrase

Die Wortstellung in Nominalphrasen “diese fünf großen Häuser” und “das feuchte Holz” wurden für die Festlegung der Reihenfolge von Artikel und Nomen in Nominalphrase angeschaut. Nur wenn die Reihenfolge von diesen zwei Nominalphrasen identisch sind, kann man ihre Reihenfolge festlegen.

table(Daten$Artikel.Nomen)

     DET+N      N+DET nicht klar 
        23          2          1 

Durch die Funktion “table()” sieht man, dass insgesamt 23 Sprachen eine Reihenfolge “Artikel vor Nomen” hat und nur in zwei Sprachen “Nomen vor Artikel” ist. In dem Übersetzungsbogen von Persisch gab es leider keinen Artikel, daher wurde diese Reihenfolge für Persischen als “nicht klar” dargestellt.

Karte 5: Die Reihenfolge von Artikel und Nomen in Nominalphrase

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue", "green3")
mycols2 <- cols[Daten$Artikel.Nomen]
mysymbols <- c(20, 20, 20)
ArtNon <- mysymbols[Daten$Artikel.Nomen]
myname <- c("Artikel vor Nomen (23)", "Nomen vor Artikel (2)", "Nicht Klar (1)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtNon
       , col = mycols2)
title(main = "Die Reihenfolge von Artikel und Nomen in Nominalphrase")
legend ("bottomleft"
        , legend = myname
        , pch = ArtNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Mit Karte 5 sehen wir, dass die dominante Reihenfolge von Artikel und Nomen der erhobenen Sprachen “Artikel vor Nomen” ist. Jedoch gibt es noch zwei Sprachen: Vietnamesisch und Indonesisch, in denen die dominante Reihenfolge “Nomen vor Artikel” ist. Wie in Nominalphrase “diese fünf großen Häuser”:

  • In Vietnamesisch:
  • Numerale + Nomen + Adjektiv + Artikel
  • năm ngôi nhà lớn này
  • fünf Häuser großen dies

  • In Indonesischen:
  • Numerale + Nomen + Adjektiv + Artikel
  • lima rumah besar ini
  • fünf Häuser groß das

3.2.3 Die Reihenfolge von Farbe und Nomen in Nominalphrase “roter Ball”

Die Reihenfolge von Farbe und Nomen wurde nur mit “rot + Ball” in der Nominalphrase “einen schönen großen roten Ball” berücksichtigt.

table(Daten$Farbe.Nomen)

Fa+N N+Fa 
  18    8 

Trotzdem ergibt sich eine klare Unterschieden von diesen Sprachen, es gibt insgesamt 18 Sprachen mit der Reihenfolge “Farbe + Nomen” und 8 Sprachen “Nomen + Farbe”.

Karte 6: Die Reihenfolge von Farbe und Nomen in Nominalphrase: roter Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue")
mycols3 <- cols[Daten$Farbe.Nomen]
mysymbols <- c(20, 20)
FarbNon <- mysymbols[Daten$Farbe.Nomen]
myname <- c("Farbe vor Nomen (18)", "Nomen vor Farbe (8)")
points (Daten$Longitude, Daten$Latitude
       , pch = FarbNon
       , col = mycols3)
title(main = "Die Reihenfolge von Farbe und Nomen in Nominalphrase: roter Ball")
legend ("bottomleft"
        , legend = myname
        , pch = FarbNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Auf der Karte 6 “Die Reihenfolge von Farbe und Nomen in Nominalphrase: roter Ball” sind die 18 Sprachen für “Farbe vor Nomen” mit roten Pünktchen markiert und blauen Pünktchen für die “Nomen vor Farbe” Sprachen.

3.2.4 Die Reihenfolge von Numeralen und Nomen in Nominalphrase “fünf Häuser”

Für die Reihenfolge von Numerale und Nomen in Nominalphrase wurde nur durch die Wortstellung in “diese fünf großen Häuser” festgelegt. Hier gibt es keine Ausnahme, alle erhobene 26 Sprachen haben die Reihenfolge “Numerale vor Nomen”.

table(Daten$Numeral.Nomen)

Num+N 
   26 

Karte 7: Die Reihenfolge von Numerale und Nomen in Nominalphrase: fünf Häuser

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red")
mycols4 <- cols[Daten$Numeral.Nomen]
mysymbols <- c(20)
NumNon <- mysymbols[Daten$Numeral.Nomen]
myname <- c("Numerale vor Nomen (26)", "Nomen vor Numerale (0)")
points (Daten$Longitude, Daten$Latitude
       , pch = NumNon
       , col = mycols4)
title(main = "Die Reihenfolge von Numerale und Nomen 
in Nominalphrase: fünf Häuser")
legend ("bottomleft"
        , legend = myname
        , pch = NumNon
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

In allen erhobenen Sprachen sind Numerale vor Nomen in Nominalphrase “fünf Häuser”, hier gibt es keine Ausnahme und sind auf der Karte 7 mit blauen Pünktchen markiert.

3.2.5 Die Reihenfolge von Genitiv und Nomen in Nominalphrase “Musik von Mozart”

Durch die Nominalphrase “Musik von Mozart” kann man die Wortfolge von Genitiv und Nomen in Nominalphrase von den erhobenen Sprachen festlegen.

table(Daten$Musik.Mozart)

      MoMu       MuMo nicht klar 
         9         15          2 

Es ergibt sich drei Möglichkeiten: 15 Sprachen mit “Nomen vor Genitiv”, 9 Sprachen mit “Genitiv vor Nomen” und zwei Sprachen mit “nicht klar”. Diese zwei Sprachen sind Georgisch und Persisch. In diesen beiden Sprachen wurden diese Nominalphrase nur mit einem Wort übersetzt. In Georgischen ist “mocarts” und in Persischen ist “Mozart”. Daher wurde ihre Reihenfolge hier als “nicht klar” gezeichnet.

Karte 8: Die Reihenfolge von Genitiv und Nomen in Nominalphrase: Musik von Mozart

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("red", "blue", "green3")
mycols5 <- cols[Daten$Musik.Mozart]
mysymbols <- c(20, 20, 20)
MuMo <- mysymbols[Daten$Musik.Mozart]
myname <- c("Genitiv vor Nomen (9)", "Nomen vor Genitiv (15)", "Nicht klar (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = MuMo
       , col = mycols5)
title(main = "Die Reihenfolge von Genitiv und Nomen
in Nominalphrase: Musik von Mozart")
legend ("bottomleft"
        , legend = myname
        , pch = MuMo
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Auf der Karte 8 “Die Reihenfolge von Genitiv und Nomen in Nominalphrase: Musik von Mozart” sind “Genitiv vor Nomen” Sprachen mit roten Pünktchen markiert und blauen Pünktchen für die “Nomen vor Genitiv” Sprachen und grünen Pünktchen für “nicht klar” Sprache.

3.3 Die Reihenfolge von verschiedenen Arten der Adjektive in Nominalphrase

Durch die Vergleiche von Wortstellungen in Nominalphrasen ist es mir aufgefallen, dass viele Reihenfolgen von verschiedenen Arten der Adjektive in Nominalphrasen auch sehr vielfältig sind. Hiermit werden diese Unterschieden der Reihenfolgen von Adjektiven dargestellt.

3.3.1 Die Reihenfolge von Artikel und Farbe in Nominalphrase “einen roten Ball”

Die Reihenfolge von Artikel und Farbe wurde von Nominalphrase “einen schönen großen roten Ball” bestimmt, hier wird die Wortstellung von “ein” und “rot” genau angeschaut. Es ergibt sich drei Möglichkeiten, “Artikel vor Farbe”, “Farbe vor Artikel” und “nicht klar”.

table(Daten$Artikel.Farbe)

    DET+Fa     Fa+DET nicht klar 
        18          1          7 

In meisten erhobenen Sprachen ist der Artikel vor Adjektiv Farbe, nur in einer Sprache Georgisch ist das Adjektiv Farbe vor dem Artikel. Außerdem ist diese Reihenfolge von sieben Sprachen nicht klar, denn ein paar Informanten hatten in diesem Satz keinen Artikel geschrieben.

Karte 9: Die Reihenfolge von Artikel und Farbe in Nominalphrase: einen roten Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red", "green3")
mycols6 <- cols[Daten$Artikel.Farbe]
mysymbols <- c(20, 20, 20)
ArtFa <- mysymbols[Daten$Artikel.Farbe]
myname <- c("Artikel vor Farbe (28)", "Farbe vor Artikel (1)", "Nicht klar (7)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtFa
       , col = mycols6)
title(main = "Die Reihenfolge von Artikel und Farbe 
in Nominalphrase: einen roten Ball")
legend ("bottomleft"
        , legend = myname
        , pch = ArtFa
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Auf der Karte 9 “Die Reihenfolge von Artikel und Farbe in Nominalphrase: einen roten Ball” sind “Artikel vor Farbe” Sprachen mit blauen Pünktchen markiert und roten Pünktchen für die “Farbe vor Artikel” Sprache Georgisch und grünen Pünktchen für alle “nicht klar” Sprache.

3.3.2 Die Reihenfolge von Artikel und Numerale in Nominalphrase “diese fünf Häuser”

Die Reihenfolge von Artikel und Numerale wurde in Nominalphrase “diese fünf großen Häuser” genau angeschaut. Durch die Analyse in 3.2.4 ergibt sich, dass in allen erhobenen Sprachen Numerale vor Nomen steht. Die Analyse von 3.2.2 zeigt uns, dass in 23 Sprachen Artikel vor Nomen steht und in 2 Sprachen Nomen vor Artikel steht.

table(Daten$Artikel.Numeral)

   DET+Num nicht klar    Num+DET 
        21          1          4 

Die Analyse hier zeigt uns, dass in insgesamt 21 Sprachen der Artikel vor dem Numerale steht, aber in vier Sprachen steht das Numerale vor dem Artikel. Bei Persischen ist diese Reihenfolge nicht klar, da die Information fehlt.

Karte 10: Die Reihenfolge von Artikel und Numerale in Nominalphrase: diese fünf Häuser

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "green3", "red")
mycols7 <- cols[Daten$Artikel.Numeral]
mysymbols <- c(20, 20, 20)
ArtNum <- mysymbols[Daten$Artikel.Numeral]
myname <- c("Artikel vor Numerale (21)", "Nicht klar (1)", "Numerale vor Artikel (4)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtNum
       , col = mycols7)
title(main = "Die Reihenfolge von Artikel und Numerale
in Nominalphrase: diese fünf Häuser")
legend ("bottomleft"
        , legend = myname
        , pch = ArtNum
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Wie auf anderen Karte ist es auf Karte 10 “Die Reihenfolge von Artikel und Numerale in Nominalphrase: diese fünf Häuser” auch mit farbigen Pünktchen die Sprachen markiert und dazu gehörige Zahl in Klammer angegeben.

3.3.3 Die Reihenfolge von Artikel und Adjektiv in Nominalphrase “das feuchte Holz”

In Nominalphrase “das feuchte Holz” gab es insgesamt 22 Sprachen, in denen der Artikel vor dem Adjektiv steht. In Vietnamesischen und Indonesischen seht das Adjektiv aber vor dem Artikel. Wie diese Reihenfolge in Berber und Persischen ist, ist es unklar.

table(Daten$Artikel.Adjektiv)

   Adj+DET    DET+Adj nicht klar 
         2         22          2 

Karte 11: Die Reihenfolge von Artikel und Adjektiv in Nominalphrase: das feuchte Holz

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red", "green3")
mycols8 <- cols[Daten$Artikel.Adjektiv]
mysymbols <- c(20, 20, 20)
ArtAdj <- mysymbols[Daten$Artikel.Adjektiv]
myname <- c("Adjektiv vor Artikel (22)", "Artikel vor Adjektiv (2)", "Nicht klar (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = ArtAdj
       , col = mycols8)
title(main = "Die Reihenfolge von Artikel und Adjektiv 
in Nominalphrase: das feuchte Holz")
legend ("bottomleft"
        , legend = myname
        , pch = ArtAdj
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Wenn wir nach der Analyse von der Reihenfolge von Artikel und Nomen wieder zurückblicken, steht Nomen vor dem Artikel in Vietnamesischen und Indonesischen. Das zeigt, dass die Wortstellungen von Elementen in den Sprachen doch stark mit einander verbunden sind.

3.3.4 Die Reihenfolge von Farbe und Adjektiv in Nominalphrase “schönen roten Ball”

Die Analyse von der Reihenfolge von dem Adjektiv Farbe “rot” und Adjektiv “schön” in Nominalphrase “schönen roten Ball” zeigt uns, dass in 20 Sprachen das Adjektiv vor Farbe steht und in sechs Sprachen genau andersrum ist.

table(Daten$Farbe.Adjektiv)

Adj+Fa Fa+Adj 
    20      6 

Karte 12: Die Reihenfolge von Adjektiv und Farbe in Nominalphrase: schönen roten Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red")
mycols9 <- cols[Daten$Farbe.Adjektiv]
mysymbols <- c(20, 20)
FaAdj <- mysymbols[Daten$Farbe.Adjektiv]
myname <- c("Adjektiv vor Farbe (20)", "Farbe vor Adjektiv (6)")
points (Daten$Longitude, Daten$Latitude
       , pch = FaAdj
       , col = mycols9)
title(main = "Die Reihenfolge von Adjektiv und Farbe 
in Nominalphrase: schönen roten Ball")
legend ("bottomleft"
        , legend = myname
        , pch = FaAdj
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Das Ergebnis der Analyse ist auf der Karte 12 “Die Reihenfolge von Adjektiv und Farbe in Nominalphrase: schönen roten Ball” präsentiert. Blauen Pünktchen markieren die “Adjektiv vor Farbe” Sprachen und roten Pünktchen markieren die “Farbe vor Adjektiv” Sprachen.

3.3.5 Die Reihenfolge von Adjektiv und Umfangsadjektiv in Nominalphrase “schönen großen Ball”

Um einen hierarchischen Zusammenhang zwischen allen Elementen in Nominalphrase zu finden, wurde die Reihenfolge von Adjektiv “schön” und Umfangsadjektiv “groß” auch analysiert.

table(Daten$Adjektiv.Adjektiv.Umfang)

 Adj-U+Adj  Adj+Adj-U nicht klar 
         8         16          2 

In 16 Sprachen ist “schön” vor “groß” in Nominalphrase “einen schönen großen roten Ball”, aber in 8 Sprachen ist “groß” vor “schön”. Leider in Hindi und Persisch ist diese Reihenfolge nicht klar, die Informantin für Hindi hatte das Adjektiv “groß” vergessen zu übersetzen und die Informantin für Persisch hatte das Adjektiv “schön” vergessen zu übersetzen.

Karte 13: Die Reihenfolge von Adjektiv und Umfangsadjektiv in Nominalphrase: schönen großen Ball

maps::map("world"
          ,interior = FALSE
          , col = "grey"
          , resolution = 0)
cols <- c("blue", "red", "green3")
mycols10 <- cols[Daten$Adjektiv.Adjektiv.Umfang]
mysymbols <- c(20, 20, 20)
AdjAdjU <- mysymbols[Daten$Adjektiv.Adjektiv.Umfang]
myname <- c("Umfangsadjektiv vor Adjektiv (8)", "Adjektiv vor Umfangsadjektiv (16)", "Nicht klar (2)")
points (Daten$Longitude, Daten$Latitude
       , pch = AdjAdjU
       , col = mycols10)
title(main = "Die Reihenfolge von Adjektiv und Umfangsadjektiv 
in Nominalphrase: schönen großen Ball")
legend ("bottomleft"
        , legend = myname
        , pch = AdjAdjU
        , col = cols
        , cex = 0.7
        , pt.cex = 1.5)

Die Karte 13 “Die Reihenfolge von Adjektiv und Umfangsadjektiv in Nominalphrase: schönen großen Ball” präsentiert das Ergebnis der Analyse von der Reihenfolge “schön + groß” in Nominalphrase “einen schönen großen roten Ball”.

3.4 Zusammenfassung

Nach Payne & Huddleston (2002: 453) ist die Hierarchie von modifizierenden Adjektiven in Englisch: - Evaluative > General Property > Age > Color > Provenance > Manufacture > Type

Gibt es bei jeder Sprache eine Hierarchie für die Wortstellung in Nominalphrase? Wie stark ist den Zusammenhang? Diese Fragen kann man leider nicht nur mit diesen Daten von den Umfragen antworten. Jedoch gibt es ein paar Anmerkungen, die wichtig sind. Fast bei jeder Analyse gibt es verschiedene Verteilungen, außer bei der Reihenfolge von “Numerale und Nomen”, da hatten alle Informanten Numerale vor Nomen übersetzt.

Die Analysen von einzelner Reihenfolge in Nominalphrase zeigt uns, dass diese Reihenfolge jedoch miteinander verbunden ist. Wie diese Zusammenhangen zwischen den Wortfolgen und den Wortstellungen in Nominalphrasen sind, werden weiterhin statistisch analysiert.

4. Zusammenhang zwischen den Wortfolgen und den Wortstellungen in Nominalphrasen der erhobenen Sprachen

Nach Greenberg (1966) sind dominant Order und Harmonie-Beziehungen für Erklärung von Universalien am Wichtigsten. Mit Greenberg’s Generalisierung erklärtet man “cross-linguistic-variation”, das Konzept von “competing motivations”.

Im Folgenden werden die Zusammenhangen zwischen den Wortfolgen und den Wortstellungen in Nominalphrasen der erhobenen Sprachen mit Greenberg’s Methoden dargestellt.

4.1 Zusammenhang zwischen den Wortfolgen und die Wortstellung des Adjektivs und Nomen

Nach vorheriger Analyse wissen wir, dass es insgesamt 20 Sprachen eine SVO-Wortfolge haben und 6 Sprachen eine SOV-Wortfolge haben. Außerdem ist das Adjektiv vor dem Nomen in 17 Sprachen, in 7 Sprachen das Nomen vor dem Adjektiv und in 2 Sprachen gilt beides. Aber wie diese Verteilungen mit einander verbinden sind, wird hier mit einander verglichen.

Folge1 <- table(Daten$Wortfolge, Daten$Adjektiv.Nomen)
Folge1
     
      Adj+N N+Adj No domiant order
  SOV     5     1                0
  SVO    12     6                2

Durch die Funktion “table()” bekommen wir eine Table von dem Zusammenhang zwischen den Wortfolgen und Wortstellung des Adjektivs und Nomen. Die dominante Order ist hier “SVO-Wortfolgen + Adjektiv vor Nomen”.

barplot (Folge1
         , main = "Zusammenhang zwischen den Wortfolgen und
die Wortstellung der Adjektive und Nomen"
         )

Die Funktion “barplot()” zeigt uns eine visuelle Darstellung über die Verteilung. Hiermit sehen wir, dass die Wortstellung “Adjektiv vor Nomen” die verbreiterte Order ist.

mosaicplot(Folge1
           , color = rainbow(3)
           , xlab = "Wortfolge"
           , ylab = "Wortstllung der Adjektiv und Nomen"
           , main = "Zusammenhang zwischen den Wortfolgen und 
den Wortstellungen der Adjektive und Nomen")

Die visuelle Darstellung mit der Funktion “mosaicplot()” zeigt eine klare Verteilung. Alle rote Fläche sind für die Wortstellung “Adjektiv vor Nomen”, alle grüne Fläche sind für die Wortstellung “Nomen vor Adjektiv” und blaue Fläche sind für die “beides”. Außerdem sehen wir Linkseite die SOV Sprachen sind und Reicht Seite die SVO Sprachen sind.

chisq.test(Folge1)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test

data:  Folge1
X-squared = 1.2891, df = 2, p-value = 0.5249

Diese statistische Analyse “chisq.test()” zeigt uns, dass die P-Value vom Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Adjektiven und Nomen 0.5249 ist. Da diese P-Value > 0.05 ist, bedeutet der Zusammenhang zwischen Wortfolgen und Wortstellungen der Adjektive und Nomen von den erhobenen 26 Sprachen nicht signifikant ist.

4.2 Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Artikel und Nomen

Unsere vorherige Analyse zeigt uns, dass es in insgesamt 23 Sprachen das Artikel vor dem Nomen steht und nur in zwei Sprachen das Nomen vor dem Artikel ist. Hiermit wird der Zusammenhang zwischen den Wortfolgen und den Artikel-Nomen Wortstellungen gerechnet.

Folge2 <- table(Daten$Wortfolge, Daten$Artikel.Nomen)
Folge2
     
      DET+N N+DET nicht klar
  SOV     5     0          1
  SVO    18     2          0

Die Tabelle zeigt, dass die Order “SVO-Wortfolgen + Artikel vor Nomen” die dominante Order ist.

mosaicplot (Folge2
            , color = rainbow(3)
        , xlab = "Wortfolgen"
        , ylab = "Wortstellung von Artikel und Nomen"
        , main = "Zusammenhang zwischen den Wortfolgen und
        den Wortstellungen der Artikel und Nomen ")

Mit dem Bild sieht man die Untersieden, dass rote Fläche die “Artikel vor dem Nomen” sind, blaue Fläche diese nicht klar Sprache ist, und grüne Fläche die “Nomen vor Artikel” Sprache sind.

chisq.test(Folge2)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test

data:  Folge2
X-squared = 3.9565, df = 2, p-value = 0.1383

“Chisq.test()” zeigt, dass die P-Value vom Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Artikel und Nomen 0.1383 ist, nämlich P-Value > 0.05. Dies bedeutet, der Zusammenhang zwischen den Wortfolgen und Wortstellungen der Artikel und Nomen von den erhobenen 26 Sprachen nicht signifikant ist.

4.3 Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Farbe und Nomen

Die Tabelle von den Wortfolgen und den Wortstellungen der Farbe und Nomen zeigt uns, dass die dominante Order “SVO-Wortfolgen + Farbe vor Nomen” ist.

Folge3 <- table(Daten$Wortfolge, Daten$Farbe.Nomen)
Folge3
     
      Fa+N N+Fa
  SOV    5    1
  SVO   13    7
mosaicplot (Folge3
        , color = rainbow(2)
        , xlab = "Wortfolgen"
        , ylab = "Wortstellung von Farbe und Nomen"
        , main = "Zusammenhang zwischen den Wortfolgen und
den Wortstellungen der Farbe und Nomen ")

Auf dem Bild sind alle roten Flächen die Sprachen, in denen Farbe vor Nomen sind, und blauen Flächen die Sprachen, in denen Nomen vor Farbe steht.

chisq.test(Folge3)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test with Yates' continuity correction

data:  Folge3
X-squared = 0.12187, df = 1, p-value = 0.727

Die P-Value von der statistischen Analyse “chisq.test()” ist 0.727. Das bedeutet, der Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Adjektiv-Farbe und Nomen von den erhobenen 26 Sprachen nicht signifikant ist, da p-Value > 0.05 ist.

4.4 Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Numerale und Nomen

Die vorherige Analyse zeigt, dass das Numerale vor dem Nomen in allen erhobenen Sprachen steht. Daher hat die Tabelle von den Wortfolgen und Wortstellung von Numerale und Nomen nur zwei Verteilungen.

Folge4 <- table(Daten$Wortfolge, Daten$Numeral.Nomen)
Folge4
     
      Num+N
  SOV     6
  SVO    20

Die Order “SVO-Wortfolgen + Numerale vor Nomen” ist die dominante Order.

mosaicplot (Folge4
        , xlab = "Wortfolgen"
        , ylab = "Wortstellung von Numerale und Nomen"
        , main = "Zusammenhang zwischen den Wortfolgen und
den Wortstellungen der Numerale und Nomen ")

chisq.test(Folge4)

    Chi-squared test for given probabilities

data:  Folge4
X-squared = 7.5385, df = 1, p-value = 0.00604

Diese statistische Analyse “chisq.test()” zeigt uns, dass die P-Value für den Zusammenhang zwischen den Wortfolgen und den Wortstellungen der Numerale und Nomen 0.00604 ist. Die P-Value < 0.01 bedeutet, dass dieser Zusammenhang von den erhobenen 26 Sprachen signifikant ist.

4.5 Zusammenhang zwischen den Wortfolgen und den Wortstellungen von Genitiv und Nomen

Die vorherige Analyse zeigt, dass der Genitiv in 9 Sprachen vor dem Nomen steht und in 15 Sprachen jedoch nach dem Nomen steht und in zwei Sprachen diese Reihenfolge nicht bekannt ist. Hiermit wird der Zusammenhang zwischen den Wortfolgen und den Wortstellungen von Genitiv und Nomen gerechnet.

Folge5 <- table(Daten$Wortfolge, Daten$Musik.Mozart)
Folge5
     
      MoMu MuMo nicht klar
  SOV    5    0          1
  SVO    4   15          1

Die Tabelle zeigt, dass die Order “SVO-Wortfolgen + Nomen vor Genitiv” die dominante Order ist.

mosaicplot(Folge5
           , color = rainbow(3)
           , xlab = "Wortfolgen"
           , ylab = "Wortstellung von Genitiv und Nomen"
           , main = "Zusammenhang zwischen den Wortfolgen und 
den Wortstellungen von Genitiv und Nomen")

Grüne Fläche ist die dominante Order “Nomen vor Genitiv”, rote Fläche ist die Order “Genitiv vor Nomen” und blaue Fläche sind die nicht klare Sprache für diese Wortstellung. Außerdem sieht man einen klaren Unterschied für diese Wortstellungen zwischen SOV-Sprachen und SVO-Sprachen. Für die SOV-Sprachen ist die “Genitiv vor Nomen” die dominante Order, jedoch ist die “Nomen vor Genitiv” die dominante Order für die SVO-Sprachen.

chisq.test(Folge5)
Chi-Quadrat-Approximation kann inkorrekt sein

    Pearson's Chi-squared test

data:  Folge5
X-squared = 10.665, df = 2, p-value = 0.004832

Mit der statistische Analyse “chisq.test()” ist die P-Value 0.004832. Wenn die P-Value < 0.01 ist, bedeutet dieser Zusammenhang zwischen den Wortfolgen und den Wortstellungen von Genitiv und Nomen von den erhobenen 26 Sprachen signifikant ist. Das Bild von der Funktion “mosaicplot()” zeigt uns diese Wortstellung stark mit Wortfolgen abhängig ist.

4.6 Zusammenfassung

5. Allgemeine Diskussion und Ausblick

5.1 Kritiken

In vielen Übersetzungsbogen ist die Bedeutung von jedem Wort nicht klar markiert oder sogar nichts geschrieben, wie Persisch, Koreanisch. Man kann nur mit Wörterbuch und Google Übersetzer die Bedeutung vom einzelnen Wort raussuchen, aber meistens wird dadurch unsicher. Die Art vom Wort kann man zwar feststellen, aber nicht die genaue Bedeutung und ihre grammatische Feinheit.

Bei der Übersetzung vom Satz 1" Ich koche Suppe" wird das Subjekt in vielen Sprachen nicht eingegeben. Denn in manchen Sprachen wird das Subjekt “ich” mit der Endung von Verb markiert.

Die Übersetzungsbogen sind auf Deutsch geschrieben. Beim Übersetzung von einer Sprache ins anderen Sprache kann die Wortstellung im Satz von der eingegebenen Sprache beeinflussen. Für weitere Forschung kann man vielleicht mit Transkriptionen von Tonaufnahmen oder von frei gesprochenen Gesprächen arbeiten. Allerdings kann man sagen, dass die Datenerhoben mit Übersetzungsbogen sehr effektiv ist.

5.2 Ausblicken

Wenn man die Wortstellung mit diesen fünf Sätzen über diese erhobenen 26 Sprachen diskutieren, bekommt man eigentlich nicht alle Wortstellungsmöglichkeiten von diesen Sprachen. Eine Ausnahme ist zum Beispiel Chinesisch, die Wortstellung im Chinesischen kann sowohl “Subjekt-Verb-Objekt (SVO)” sein, als auch “Subjekt-Objekt-Verb (SOV)” sein. Die Wortfolge im chinesischen Satz kann die Bedeutung von Satz stark ändern, wie in folgenden Sätzen nach Jiang (2009):

    1. Subjekt + Negation + Verb + Objekt
  • Sichuan ren bu pa la
  • Sichuan person not fear spicy
  • “Sichuaners do not (fear their food) being spicy.”

    1. Subjekt + Objekt + Negation + Verb
  • Hubei ren la bu pa
  • Hubei person spicy not fear
  • “(Their food) being spicy is not fearful matter to Hubeiners.”

    1. Subjekt + Verb + Negation + Objekt
  • Hunan ren pa bu la
  • Hunan person fear not spicy
  • “Hunaners fear that (their food) is not spicy.”

Die Beispiele nach Jiang (2009) zeigt, dass es in Chinesischen in Negation Satz verschiedene Wortfolgen geben kann. Für die weitere Forschung ist das Thema “Negation im Satz” sehr interessant, wie viele Möglichkeiten bei Negation in jeder Sprache gibt und wie die Zusammenhangen und Verteilungen von Sprachen der Welt sind.

Literatur- und Quellenverzeichnis

LS0tCnRpdGxlOiBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiB2b24gU3ByYWNoZW4gZGVyIFdlbHQKYXV0aG9yOiAiSHVhbiBXZWksIE1hc3RlciBMaW5Lb0tvLCBNYXJ0Li1Oci4gMjQ3MTg4NCIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogIHBkZl9kb2N1bWVudDoKICAgIHRvYzogeWVzCi0tLQoKCiMxLiBFaW5sZWl0dW5nCgpJbnNnZXNhbXQgZ2lidCBlcyBjYS4gNjUwMCBiaXMgNzAwMCBTcHJhY2hlbiBhdWYgZGVyIFdlbHQuIEV0d2EgZGllIEjDpGxmdGUgZGVyIEVyZGJldsO2bGtlcnVuZyBzcHJlY2hlbiBlaW5lIGRlciAxMCBtZWlzdGdlc3Byb2NoZW5lbiBTcHJhY2hlbi4gRGllIHNpbmQgTWFuZGFyaW4tQ2hpbmVzaXNjaCwgRW5nbGlzY2gsIFNwYW5pc2NoLCBIaW5kaSwgQXJhYmlzY2gsIFBvcnR1Z2llc2lzY2gsIEJlbmdhbGksIFJ1c3Npc2NoLCBKYXBhbmlzY2ggdW5kIERldXRzY2guIAoKVmVyc2NoaWVkZW5lIFNwcmFjaGVuIGhhYmVuIHZlcnNjaGllZGVuZSBXb3J0c3RlbGx1bmdzbcO2Z2xpY2hrZWl0ZW4sIHp1bSBCZWlzcGllbCBpc3QgZGllIFdvcnRmb2xnZSBhdWYgRGV1dHNjaCBTdWJqZWt0LVZlcmItT2JqZWt0LCB3aWUgaW0gU2F0eiAiSWNoIGtvY2hlIFN1cHBlLiIsIGF1ZiBKYXBhbmlzY2ggaXN0IGRpZSBXb3J0Zm9sZ2Ugdm9uIGRpZXNlbSBTYXR6IGplZG9jaCBTdWJqZWt0LU9iamVrdC1WZXJiOgoKV2F0YXNoaSB3YSBzdS1wdSAgd28gIHRzdWt1cnUgCkljaCAgICAgICAgU3VwcGUgICAgICAga29jaGVuCgpWZXJzY2hpZWRlbmUgU3ByYWNoZW4gaGFiZW4gdmVyc2NoaWVkZW5lIFdvcnRzdGVsbHVuZ3Ntw7ZnbGljaGtlaXRlbiBpbiBOb21pbmFscGhyYXNlbiwgenVtIEJlaXNwaWVsIGRpZSBXb3J0c3RlbGx1bmcgdm9uIEFkamVrdGl2ZW4gdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2VuLiBJbiBEZXV0c2NoZW4gaXN0IGRhcyBBZGpla3RpdiB2b3IgZGVtIE5vbWVuLCB3aWUgaW4gZGVyIE5vbWluYWxwaHJhc2UgImRhcyBmZXVjaHRlIEhvbHoiLCBhYmVyIGluIEZyYW56w7ZzaXNjaGVuIGthbm4gZGFzIE5vbWVuIHZvciBkZW0gQWRqZWt0aXYgZ2VzdGVsbHQgd2lyZDoKCmxlICAgIGJvaXMgICBodW1pZGUKZGFzICAgSG9seiAgIGZldWNodGUKCkplZG9jaCBrYW5uIG1hbiBuaWNodCBzYWdlbiwgZGFzcyBkaWUgU3ByYWNoZW4gYXVmIGRlciBXZWx0IGtlaW5lIEdlbWVpbnNhbWtlaXRlbiBoYWJlbi4gRGVubiBhbGxlIFNwcmFjaGVuIGhhYmVuIFfDtnJ0ZXIgdW5kIFPDpHR6ZSwgV8O2cnRlciB3ZXJkZW4gYXVzIGVsZW1lbnRhcmVuIGJlZGV1dHVuZ3Nsb3NlbiBMYXV0ZW4gb2RlciBHZXN0ZW4gZ2ViaWxkZXQsIGFsbGUgU3ByYWNoZW4gaGFiZW4ga29tcGxleGUgbW9ycGhvbG9naXNjaGUgdW5kL29kZXIgc3ludGFrdGlzY2hlIFN0cnVrdHVyZW4sIGFsbGUgU3ByYWNoZW4gaGFiZW4gRnJhZ2VhdXNkcsO8Y2tlIHVuZCBWZXJuZWludW5nc2F1c2Ryw7xja2UgdXN3LiAKCkVzIGxhc3NlbiBzaWNoIG9mdCB1bml2ZXJzYWxlIEJlaGF1cHR1bmdlbiBudXIgYXVmc3RlbGxlbiwgd2VubiBlaW5lIHdlaXRlcmUgQmVkaW5ndW5nIGVyZsO8bGx0IGlzdDogSW1wbGlrYXRpb25zdW5pdmVyc2FsaWVuICh2Z2wuQ3JvZnQgMjAwMikuCiJXZW5uIGVpbmUgU3ByYWNoZSBMIGRpZSBFaWdlbnNjaGFmdCBBIGhhdCwgZGFubiBoYXQgc2llIGF1Y2ggZGllIEVpZ2Vuc2NoYWZ0IEIiCgpCZWlzcGllbHN3ZWlzZSAiV2VubiBlaW5lIFNwcmFjaGUgZWluIFtmXSBMYXV0IGhhdCwgZGFubiBoYXQgc2llIGF1Y2ggZWluIFtzXSBMYXV0OyBXZW5uIGluIGVpbmVyIFNwcmFjaGUgZGFzIE9iamVrdCBkZW0gVmVyYiB2b3JhbmdlaHQgIkRlciBIdW5kIGRpZSBLYXR6ZSBqYWd0IiwgZGFubiBzdGVodCBhdWNoIGRlciBCZXNpdHplciB2b3IgZGVtIEJlc2l0eiAiZGVzIEh1bmRlcyBIw7x0dGUiLgoKTmFjaCBkaWVzZXIgVGhlb3JpZSB3aXJkIGluIGRpZXNlciBlbXBpcmlzY2hlbiBBcmJlaXQgZGVuIFp1c2FtbWVuaGFuZ2VuIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIGltIFNhdHogdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiB2b24gZGVuIGVyaG9iZW5lbiAyNiBTcHJhY2hlbiB1bnRlcnN1Y2h0LCBvYiBlcyBuYWNoIGRpZXNlciBUaGVvcmllIGF1Y2ggQXVzbmFobWUgZ2lidCB1bmQgb2IgZGllc2UgWnVzYW1tZW5oYW5nZW4gbmFjaCBTdGF0aXN0aWsgc2lnbmlmaWthbnQgc2luZC4gCgpEaWVzZSBBcmJlaXQgd2lyZCBtaXQgU3RhdGlzdGlrICJSIiBnZXNjaHJpZWJlbiB1bmQgYWxsZSBEYXRlbiB3ZXJkZW4gaW4gIlIiIGVpbmdlbGVzZW4gdW5kIGF1c2dld2VydGV0LiBEaWUgS2FydGVuIGbDvHIgZGllIMOcYmVyc2ljaHRlbiB2b24gdmVyc2NoaWVkZW5lIFRoZW1lbiBkZXIgZXJob2JlbmVuIFNwcmFjaGVuIHdlcmRlbiBtaXQgIlIiIGRhcmdlc3RlbGx0LiAKCgojMi4gRWlnZW5lIGVtcGlyaXNjaGUgQXJiZWl0CgpVbSBkZW4gWnVzYW1tZW5oYW5nZW4gendpc2NoZW4gZGVyIFdvcnRmb2xnZSBpbSBTYXR6IHVuZCBkZW4gV29ydHN0ZWxsdW5nZW4gaW4gTm9taW5hbHBocmFzZW4gaW4gZGVyIFNwcmFjaGUgaGVyYXVzenVmaW5kZW4sIHd1cmRlIGVpbmVuIEZyYWdlYm9nZW4gbWl0IDEwLWRldXRzY2hlbiBTw6R0emVuIGFuIHZlcnNjaGllZGVuZSBNdXR0ZXJzcHJhY2hsZXIgZ2VnZWJlbi4gVm9uIERlemVtYmVyIDIwMTcgYmlzIEVuZGUgRmVicnVhciAyMDE4IHd1cmRlbiBpbnNnZXNhbXQgMjUgRnJhZ2Vib2dlbiB2b24gSW5mb3JtYW50ZW4genVyw7xja2Jla29tbWVuLiBNaXQgZGllc2VuIDI2IFNwcmFjaGVuIChpbmtsdXNpdiBEZXV0c2NoKSB3ZXJkZW4gZGllIEltcGxpa2F0aW9uc3VuaXZlcnNhbGllbiBnZW5hdSBhbmdlc2NoYXV0LiAKCiMjMi4xIMOcYmVybGVndW5nZW4genVyIFdhaGwgZGVyIEluZm9ybWFudGVuIHVuZCBTcHJhY2hlbgoKRGllIMOcYmVybGVndW5nZW4genVyIFdhaGwgZGVyIFBlcnNvbmVuIHdhciwgZGFzcyB3aXIgbnVyIGRpZSBNdXR0ZXJzcHJhY2hsZXIgc3VjaGVuLiBEZW5uIGRpZSBMMi1MZWFuZXIgc2luZCBtZWlzdGVucyB1bnNpY2hlciB1bmQgYnJhdWNoZW4gTGVocmLDvGNoZXIgb2RlciBXw7ZydGVyYnVjaCwgdW0gZGVuIMOcYmVyc2V0enVuZ3Niw7ZnZW4gaW5zIGFuZGVyZW4gU3ByYWNoZW4genUgw7xiZXJzZXR6ZW4uIEFiZXIgTXV0dGVyc3ByYWNobGVyIGvDtm5uZW4gbWVpc3RlbnMgZGllIHBhc3NlbmRlbiBBdXNkcsO8Y2tlbiBpbiBpaHJlciBNdXR0ZXJzcHJhY2hlIGJlc3NlciBmaW5kZW4uICAKCkVzIGlzdCBiZWltIEVyaGViZW4gb3B0aW1hbCwgd2VubiBtYW4gZGllIFNwcmFjaGVuIHZvbiB2aWVsZW4gU3ByYWNoZmFtaWxpZW4gYWxzIFF1ZWxsZW4gYmVrb21tZW4ga2FubiwgYW0gYmVzdGVuIGF1Y2ggZWluIHBhYXIgaXNvbGllcnRlIFNwcmFjaGVuIG9kZXIgZGllIFNwcmFjaGVuIG1pdCB3ZW5pZ2UgU3ByZWNoZXIgZGFiZWkga8O2bm50ZW4uIERpZSBpbnNnZXNhbXQgZXJob2JlbmVuIFNwcmFjaGVuIHNpbmQ6IERldXRzY2gsIEVuZ2xpc2NoLCBOaWVkZXJsw6RuZGlzY2gsIEZyYW56w7ZzaXNjaCwgSXRhbGllbmlzY2gsIEdyaWVjaGlzY2gsIFBvcnR1Z2llc2lzY2gsIFBvbG5pc2NoLCBSdXNzaXNjaCwgVWtyYWluaXNjaCwgUnVtw6RuaXNjaCwgQXJtZW5pc2NoLCBUw7xya2lzY2gsIFRpZ3JpbmphLCBIaW5kaSwgVmlldG5hbWVzaXNjaCwgSW5kb25lc2lzY2gsIEtyb2F0aXNjaCwgR2Vvcmdpc2NoLCBCZXJiZXIsIFBlcnNpc2NoIHVuZCBTcGFuaXNjaCB2b24gTWV4aWtvLiAKCk9id29obCBlcyBudXIgMjYgU3ByYWNoZW4gZXJob2JlbiB3dXJkZSwgYWJlciBkaWVzZSBTcHJhY2hlbiBzaW5kIGd1dCBhdWYgZGVuIFNwcmFjaGZhbWlsaWVuIGdldGVpbHQuIEVzIGdpYnQgbmljaHQgbnVyIEluZG9ldXJvcMOkaXNjaGUgU3ByYWNoZW4gd2llIERldXRzY2gsIEVuZ2xpc2NoLCBOaWVkZXJsw6RuZGlzY2gsIEZyYW56w7ZzaXNjaCwgU3BhbmlzY2gsIEl0YWxpZW5pc2NoLCBHcmllY2hpc2NoLCBQb3J0dWdpZXNpc2NoLCBQb2xuaXNjaCwgUnVzc2lzY2gsIFVrcmFpbmlzY2gsIFJ1bcOkbmlzY2gsIEhpbmRpLCBLcm9hdGlzY2ggdW5kIFBlcnNpc2NoLCBzb25kZXJuIGF1Y2ggZGllIGlzb2xpZXJ0ZW4gU3ByYWNoZW4gd2llIEtvcmVhbmlzY2gsIEphcGFuaXNjaCB1bmQgQ2hpbmVzaXNjaC4gQXXDn2VyZGVtIHNpbmQgZGllIEFsdGFpc2NoZSBTcHJhY2hlbiB3aWUgVMO8cmtpc2NoLCBBZnJvYXNpYXRpc2NoZSBTcHJhY2hlbiB3aWUgVGlncmluamEgdW5kIEJlcmJlciwgU2lub3RpYmV0aXNjaGUgU3ByYWNoZW4gd2llIEthbnRvbmVzaXNjaCwgQXVzdHJvYXNpYXRpc2NoZSBTcHJhY2hlIHdpZSBWaWV0bmFtZXNpc2NoLCBBdXN0cm9uZXNpc2NoIHdpZSBJbmRvbmVzaXNjaCB1bmQgU8O8ZGthdWthc2lzY2hlIFNwcmFjaGVuIHdpZSBHZW9yZ2lzY2ggKHZnbC4gV2Fscy5pbmZvKS4KCkltIEZvbGdlbmRlbiB3ZXJkZW4gZGllIERhdGVuIHZvbiBkZW4gZXJob2JlbmVuIFNwcmFjaGVuIGluICJSIiBlaW5nZWxlc2VuIHVuZCBzY2hsaWXDn2xpY2ggd2lyZCBlaW5lIEthcnRlIGbDvHIgZWluZSDDnGJlcnNpY2h0IGRlciBlcmhvYmVuZW4gU3ByYWNoZW4gbWl0IGRpZXNlbiBEYXRlbiBkYXJnZXN0ZWxsdC4KCkRpZSBBbmFseXNlIHZvbiBkZW4gZXJob2JlbmVuIFNwcmFjaGVuIGlzdCBhbHMgIlVtZnJhZ2VkYXRlbi5jc3YiIHVudGVyIE9yZG5lciAic291cmNlcyIgZ2VzcGVpY2hlcnQuIEhpZXIgd2lyZCBlcyBtaXQgInJlYWQuY3N2KCkiIGluIFIgZWluZ2VsZXNlbiB1bmQgYWxzICJEYXRlbiIgZ2VuYW5udC4gTWl0IGRlciBGdW5rdGlvbiAic3VtbWFyeSgpIiBrYW5uIG1hbiBkaWUgU3RydWt0dXJlbiB2b24gZGVyIERhdGVpIGFuc2NoYXVlbi4KCmBgYHtyfQpEYXRlbiA8LSByZWFkLmNzdiAoIi8vVXNlcnMvdmVyYXdlaS9EZXNrdG9wL0hBIFNwcmFjaHR5cG9sb2dpZS9zb3VyY2VzL1VtZnJhZ2VkYXRlbi5jc3YiCiAgICAgICAgICAgICAgICAgICAgLCBoZWFkZXIgPSBUUlVFCiAgICAgICAgICAgICAgICAgICAsIHNlcCA9ICI7IikKYGBgCgpgYGB7cn0Kc3VtbWFyeShEYXRlbikKYGBgCgpNaXQgZGVyIERhcnN0ZWxsdW5nIGthbm4gbWFuIGRpZSBTdHJ1a3R1cmVuIHZvbiBkZXIgQW5hbHlzZWRhdGVpIGtsYXIgdmVyc3RlaGVuLiBEZXIgZXJzdGUgU3BhbHQgdm9uIGRlciBEYXRlaSBzaW5kIGRpZSAyNiBlcmhvYmVuZW4gU3ByYWNoZW4gdW5kIGRhcyBlcnN0ZSBaaWVsIHZvbiBkZXIgRGF0ZWkgc2luZCBkaWUgMTcgVmVydGVpbHVuZ2VuOiAiU3ByYWNoZSIsICJMYW5kIiwgIkdhdHR1bmciLCAiRmFtaWxpZSIsICJMYXRpdHVkZSIsICJMb25naXR1ZGUiLCAiV29ydGZvbGdlIiwgIkFkamVrdGl2ICsgTm9tZW4iLCAiTXVzaWsgKyBNb3phcnQiLCAiQXJ0aWtlbCArIE5vbWVuIiwgIkZhcmJlICsgTm9tZW4iLCAiTnVtZXJhbGUgKyBOb21lbiIsICJBcnRpa2VsICsgRmFyYmUiLCAiQXJ0aWtlbCArIE51bWVyYWxlIiwgIkFydGlrZWwgKyBBZGpla3RpdiIsICJGYXJiZSArIEFkamVrdGl2IiB1bmQgIkFkamVrdGl2ICsgQWRqZWt0aXZfVW1mYW5nIi4gCgojIyMjIEthcnRlIDE6IMOcYmVyc2ljaHQgZGVyIGVyaG9iZW5lbiBTcHJhY2hlbgoKSW4gZGVyIEthcnRlIDEgd2VyZGVuIGFsbGUgZXJob2JlbmVuIFNwcmFjaGVuIG5hY2ggaWhyZXIgUsOkdW1saWNoa2VpdCBhdWYgZGVyIFdlbHRrYXJ0ZSBkYXJnZXN0ZWxsdC4gRGllIEthcnRlIDEgemVpZ3QsIGRhc3MgZGllIGVyaG9iZW5lIFNwcmFjaGVuIGd1dCBhdWYgZGVyIGdhbnplbiBXZWx0IGdldGVpbHQgc2luZC4gRGllIG1laXN0ZW4gU3ByYWNoZW4gc2luZCBldXJvcMOkaXNjaGUgU3ByYWNoZW4sIGFiZXIgYXNpYXRpc2NoZSB1bmQgYWZyaWthbmlzY2hlIFNwcmFjaGVuIHNpbmQgYXVjaCBkYWJlaS4KCmBgYHtyfQpsaWJyYXJ5KG1hcHMpCm1hcCgid29ybGQiLCBpbnRlcmlvcj1GQUxTRSwgY29sPSJncmV5IiwgcmVzb2x1dGlvbj0wKQoKcG9pbnRzKERhdGVuJExvbmdpdHVkZSwgRGF0ZW4kTGF0aXR1ZGUKICAgICAgICwgY29sID0gInJlZCIKICAgICAgICwgY2V4ID0uNwogICAgICAgLCBwY2ggPSAyMCkKCnRpdGxlIChtYWluID0gIsOcYmVyc2ljaHQgZGVyIGVyaG9iZW5lbiBTcHJhY2hlbiAiKQpgYGAKCiMjIyMgS2FydGUgMjogw5xiZXJzaWNodCBkZXIgZXJob2JlbmVuIFNwcmFjaGVuIG5hY2ggZGVyIFNwcmFjaGZhbWlsaWUKCkluIEZvbGdlbmRlciBLYXJ0ZSAyIHdlcmRlbiBkaWVzZSBlcmhvYmVuZW4gU3ByYWNoZW4gbmFjaCBpaHJlciBTcHJhY2hmYW1pbGllIGRhcmdlc3RlbGx0LiBNaXQgZGllc2VyIERhcnN0ZWxsdW5nIGthbm4gbWFuIGVpbmVuIGJlc3NlcmVuIMOcYmVyYmxpY2sgw7xiZXIgZGllIFNwcmFjaGVuIHVuZCBpaHJlIHp1c2FtbWVuZ2Vow7ZyaWdlIFNwcmFjaGZhbWlsaWUgYmVrb21tZW4uIERpZSBlcmhvYmVuZW4gU3ByYWNoZW4gc2luZCBndXQgYXVmIGRlbiBTcHJhY2hmYW1pbGllbiBnZXRlaWx0LiAgCgpgYGB7cn0KdGFibGUoRGF0ZW4kRmFtaWxpZSkKYGBgCgpNaXQgZGVyIEZ1bmt0aW9uICJ0YWJsZSgpIiBiZWtvbW10IG1hbiBkaWUgVmVydGVpbHVuZyBkZXIgRGF0ZWkgaW4gIlIiLiBFcyB6ZWlndCwgZGFzcyBlcyBpbnNnZXNhbXQgMTYgSW5kb2V1cm9ww6Rpc2NoZSBTcHJhY2hlbiB1bmQgendlaSBBZnJvYXNpYXRpc2NoZSBTcHJhY2hlbiBnaWJ0LiBBdcOfZXJkZW0gc2luZCBkaWUgU3ByYWNoZmFtaWxpZSBTw7xka2F1a2FzaXNjaGUgU3ByYWNoZW4sIEFsdGFpc2NoZSBTcHJhY2hlbiwgQXVzdHJvYXNpYXRpc2NoZSBTcHJhY2hlbiwgQXVzdHJvbmVzaXNjaGUgU3ByYWNoZSwgU2lub3RpYmV0aXNjaGUgU3ByYWNoZW4sIENoaW5lc2lzY2gsIEphcGFuaXNjaCB1bmQgS29yZWFuaXNjaCBhdWNoIGRhYmVpLiBEYXLDvGJlciBoaW5hdXMga2FubiBtYW4gc2FnZW4sIGRhc3MgZGllIGVyaG9iZW5lbiAyNiBTcHJhY2hlbiBzZWhyIHZpZWxmw6RsdGlnIHNpbmQuIAoKYGBge3J9Cm1hcHM6Om1hcCgid29ybGQiCiAgICAgICAgICAsaW50ZXJpb3IgPSBGQUxTRQogICAgICAgICAgLCBjb2wgPSAiZ3JleSIKICAgICAgICAgICwgcmVzb2x1dGlvbiA9IDApCgpjb2xzIDwtIGMoImRhcmtncmVlbiIsICJibHVlIiwgInllbGxvd2dyZWVuIiwgImdvbGQiLCAicHVycGxlIiwgInJlZCIsICJkZWVwc2t5Ymx1ZTIiLCAiZGFya2JsdWUiLCAiZGFya29yY2hpZDEiLCAiZ3JlZW4zIikKbXljb2xzIDwtIGNvbHNbRGF0ZW4kRmFtaWxpZV0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwKQpTcHJhY2hlZmFtaWxpZSA8LSBteXN5bWJvbHNbRGF0ZW4kRmFtaWxpZV0KCm15bmFtZSA8LSBjKCJBZnJvYXNpYXRpc2NoIiwgIkFsdGFpc2NoIiwgIkF1c3Ryb2FzaWF0aXNjaCIsICJBdXN0cm9uZXNpc2NoIiwgIkNoaW5lc2lzY2giLCAiSW5kb2V1cm9ww6Rpc2NoIiwgIkphcGFuaXNjaCIsICJLb3JlYW5pc2NoIiwgIlNpbm90aWJldGlzY2giLCAiU8O8ZGthdWthc2lzY2giKQoKcG9pbnRzKERhdGVuJExvbmdpdHVkZSwgRGF0ZW4kTGF0aXR1ZGUKICAgICAgICwgcGNoID0gU3ByYWNoZWZhbWlsaWUKICAgICAgICwgY29sID0gbXljb2xzCiAgICAgICApCgp0aXRsZShtYWluID0gIsOcYmVyc2ljaHQgZGVyIGVyaG9iZW5lbiBTcHJhY2hlbiBuYWNoIGRlciBTcHJhY2hmYW1pbGllIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IFNwcmFjaGVmYW1pbGllCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgpVbSBkaWUgU3RydWt0dXIgdm9uIGRlbiBTcHJhY2hlbiBtaXQgRmFyYmVuIGRhcnp1c3RlbGxlbiwgaGFiZSBpY2ggenVlcnN0IG1pdCBkZXIgRnVua3Rpb24gInRhYmxlKCkiIGRpZSBTdHJ1a3R1ciB2b24gZGVyIFNwcmFjaGZhbWlsaWUgYW5nZXNjaGF1dC4gU29kYXNzIGljaCBkaWUgcmljaHRpZ2UgUmVpaGZvbGdlIHZvbiBkZW4gU3ByYWNoZW4gbWl0IHBhc3NlbmRlbiBGYXJiZW4gZWlub3JkbmVuIGtvbm50ZS4gRGllIEF1c3dhaGwgdm9uIEZhcmJlbiBmw7xyIGRpZSBLYXJ0ZSBpc3Qgc2Nod2llcmlnLiBFaW5lIFNlaXRlIHNvbGx0ZW4gZGllIG7DpGggenVzYW1tZW5nZWjDtnJpZ2UgU3ByYWNoZmFtaWxpZSBlaW5lIMOkaG5saWNoZSBGYXJiZSBiZWtvbW1lbiwgYW5kZXJlIFNlaXRlIHNvbGx0ZW4gZGllIE9ydHNwdW5rdGUgdm9uIFNwcmFjaGVuIGd1dCBhdWZmw6RsbGlnIHNpbmQuIAoKIyMyLjIgw5xiZXJzZXR6dW5nc3PDpHR6ZW4KCkRpZXNlciDDnGJlcnNldHp1bmdzYm9nZW4gd3VyZGUgdm9uIG1pciB1bmQgendlaSB3ZWl0ZXJlbiBTdHVkZW50aW5uZW4genVzYW1tZW5nZXN0ZWxsdC4KTWl0IGRpZXNlbSDDnGJlcnNldHp1bmdzYm9nZW4gbcO2Y2h0ZW4gd2lyIGhlcmF1c2ZpbmRlbiwgd2llIGJlc3RpbW10ZSBTw6R0emUgaW4gdmVyc2NoaWVkZW5lIFNwcmFjaGVuIGF1ZmdlYmF1dCBzaW5kLCB3aWUgU3VwZXJsYXRpdiB1bmQgTW9kYWxwYXJ0aWtlbG4uIERhaGVyIGVudGjDpGx0IGRlciDDnGJlcnNldHp1bmdzYm9nIGZvbGdlbmRlIFplaG4gU8OkdHplOgoKMS4gSWNoIGtvY2hlIFN1cHBlLiAKMi4gRGVyIELDpGNrZXIgYmFja3QgamEgZGFzIEJyb3QgYW0gc2NobmVsbHN0ZW4uIAozLiBEaWUgU2Now7xsZXIgaMO2cmVuIGFtIGxpZWJzdGVuIE11c2lrIHZvbiBNb3phcnQuIAo0LiBEaWUgVG91cmlzdGVuIHNlaGVuIGRpZXNlIGbDvG5mIGdyb8OfZW4gSMOkdXNlci4gCjUuIERpZSBLaW5kZXIgd2VyZmVuIGRvY2ggZWluZW4gc2Now7ZuZW4gZ3Jvw59lbiByb3RlbiBCYWxsLiAKNi4gV2FzIG1hY2hzdCBkdSBkZW5uPyAKNy4gRHUgaGFzdCBlYmVuIG5pY2h0IGdlbnVnIGdlbGVybnQhIAo4LiBUaW0gd2lyZnQgZGVuIEJhbGwgYW0gd2VpdGVzdGVuLiAKOS4gS2xlaW5lIEh1bmRlIGJlbGxlbiBhYmVyIGFtIGxhdXRlc3Rlbi4gCjEwLiBEYXMgZmV1Y2h0ZSBIb2x6IHZlcmJyZW5udCBhbSBzY2hsZWNodGVzdGVuLiAKCkljaCBpbnRlcmVzc2llcmUgbWljaCDDvGJlciBkZW4gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBkZW4gV29ydHN0ZWxsdW5nZW4gaW4gTm9taW5hbHBocmFzZW4gZGVyIFNwcmFjaGVuLiBGw7xyIG1laW5lIEFuYWx5c2Ugc2luZCBudXIgZm9sZ2VuZGUgU2F0enRlaWxlbiByZWxldmFudDogCgotIHZvbSBlcnN0ZW4gU2F0ejogSWNoIGtvY2hlIFN1cHBlLiBbU3ViamVrdCArIFZlcmIgKyBPYmpla3RdCi0gdm9tIGRyaXR0ZW4gU2F0ejogTXVzaWsgdm9uIE1vemFydCBbIE5vbWVuICsgTm9tZW5dCi0gdm9tIHZpZXJ0ZW4gU2F0ejogZGllc2UgZsO8bmYgZ3Jvw59lbiBIw6R1c2VyIFtERVQgKyBOdW0gKyBBZGotVW1mYW5nICsgTl0KLSB2b20gZsO8bmZ0ZW4gU2F0ejogZWluZW4gc2Now7ZuZW4gZ3Jvw59lbiByb3RlbiBCYWxsIFsgQVJUICsgQWRqICsgQWRqLVVtZmFuZyArIEZhcmJlICsgTl0KLSB2b20gbmV1bnRlbiBTYXR6OiBrbGVpbmUgSHVuZGUgW0FkaiArIE5dCi0gdm9tIHplaG50ZW4gU2F0ejogZGFzIGZldWNodGUgSG9seiBbREVUICsgQWRqICsgTl0KCk1pdCBkZW0gU2F0eiAxIG3DtmNodGUgaWNoIGRpZSBXb3J0Zm9sZ2VuIGltIFNhdHogdm9uIGRlciBTcHJhY2hlIGZlc3R6dXN0ZWxsZW4uIExlaWRlciBnaWJ0IGVzIHZpZWxlIFNwcmFjaGVuLCB3ZW5uIGRlciBTdWJqZWt0IGltIFNhdHogImljaCIgaXN0LCBmw6RsbHQgZGVuIFN1Ympla3Qgd2VnIHVuZCB3aXJkIG1pdCBkZXIgRW5kdW5nIHZvbiBWZXJiIG1hcmtpZXJ0LiBEYWhlciBoYWJlIGljaCBkaWUgV29ydGZvbGdlbiB2b24gZGVyIFNwcmFjaGUgaW1tZXIgYXVmIGFsbGUgZ2VmcmFndGUgemVobiBTw6R0emVuIGJlcsO8Y2tzaWNodGlndC4gCgpNaXQgUGhyYXNlICJNdXNpayB2b24gTW96YXJ0IiB3aXJkIGRpZSBHZW5pdGl2LU5vbWVuLVJlaWhlbmZvbGdlIGFuYWx5c2llcnQsIGRhbWl0IHdpcmQgZGllIFJlaWhlbmZvbGdlIGbDvHIgR2VuaXRpdi1Ob21lbiBvZGVyIE5vbWVuLUdlbml0aXYgaW4gZGVyIFNwcmFjaGUgZmVzdGdlc3RlbGx0LiBNaXQgZGVuIFNhdHp0ZWlsZW4gdm9uIFPDpHR6ZW4gNCwgNSwgOSwgMTAgd2VyZGVuIGRpZSBSZWloZW5mb2xnZW4gdm9uIHZlcnNjaGllZGVuZW4gRWxlbWVudGVuIGluIGRlciBOb21pbmFscGhyYXNlIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4gZmVzdGdlc3RlbGx0LiAKCkF1w59lcmRlbSBzaW5kIGRpZSBOb21pbmFscGhyYXNlbiB2b24gU8OkdHplbiAzLCA0IHVuZCA1IGRlbiBEaXJla3RvYmpla3QsIGFiZXIgaW0gU2F0eiA5IHVuZCAxMCBzaW5kIGRpZSBOb21pbmFscGhyYXNlbiBkYXMgU3ViamVrdC4gRHVyY2ggZGllIEFuYWx5c2Ugdm9uIGRlbiBlcmhvYmVuZW4gU3ByYWNoZW4gemVpZ3QgZXMga2VpbmUgVW50ZXJzY2hpZWRlbiB2b24gZGVyIFdvcnRzdGVsbHVuZyBpbiBOb21pbmFscGhyYXNlbiB2b24gZGllc2VuIGbDvG5mIFPDpHR6ZW4gKHNlaGVuIFNpZSBEYXRlbiB2b24gIlVtZnJhZ2UgQW5hbHlzZS54bHN4IikuCgojIzIuMyBNZXRob2RlIHVuZCBBYmxhdWYKCkRpZSBtZWlzdGVuIEluZm9ybWFudGVuIHNpbmQgbWVpbmUgQXJiZWl0c2tvbGxlZ2VuLCBGcmV1bmRlIG9kZXIgS29tbWlsaXRvbmVuLiBEdXJjaCBwZXJzw7ZubGljaGUgR2VzcHLDpGNoZSwgRS1NYWlscyB1bmQgTmFjaHRyaWNodGVuIHZvbiBGYWNlYm9vayBoYWJlIGljaCBzaWUgYWxzIEluZm9ybWFudGVuIGdld29ubmVuLiBEaWUgw5xiZXJzZXR6dW5nc2JvZ2VuIHNpbmQgZW50d2VkZXIgaW4gYXVzZ2VkcsO8Y2t0ZW4gUGFwaWVyZm9ybWVuIGFuIEluZm9ybWFudGVuIHBlcnPDtm5saWNoIGdlZ2ViZW4sIG9kZXIgYWxzIFdvcmQtIHVuZCBQREYtRGF0ZWkgYW4gSW5mb3JtYW50ZW4gcGVyIEUtTWFpbCBlcnJlaWNodGV0LiBEaWUgSW5mb3JtYW50ZW4gaGFiZW4gZHVyY2hzY2huaXR0bGljaCBjYS4gZWluZSBXb2NoZSBnZWJyYXVjaHQsIGJpcyBzaWUgbWlyIGRpZSDDnGJlcnNldHp1bmdlbiB6dXLDvGNrZ2ViZW4uIAoKRGllIFNwcmFjaGVuLCB3aWUgS3JvYXRpc2NoLCBBcm1lbmlzY2ggdW5kIFJ1bcOkbmlzY2gsIGhhdHRlbiBkaWUgSW5mb3JtYW50ZW4gd2VpdGVyaGluIGlocmUgRnJldW5kZSBmw7xyIGRpZSBGcmFnZWJvZ2VuIGdlbGVpdGV0LiBadXNhbW1lbmZhc3NlbmRlIGthbm4gbWFuIHNhZ2VuLCBkYXNzIEVua29kaWVydW5nIGRlciBJbmZvcm1hbnRlbiBuaWNodCBzZWhyIHNjaHdpZXJpZyB3YXIuIERlbm4gc2llIHNpbmQgc2VociBtb3RpdmllcnQsIGlocmUgTXV0dGVyc3ByYWNoZSB6dSBhbmRyZW4gd2VpdGVyIHp1IGVya2zDpHJlbiB1bmQgZGllIFVudGVyc2NoaWVkZW4gendpc2NoZW4gaWhyZSBNdXR0ZXJzcHJhY2hlIHVuZCBEZXV0c2NoIGJlc3NlciB6dSBlcmtlbm5lbi4gCgpEaWUgVW1mcmFnZWJvZ2VuICJVbWZyYWdlIFN0dWRpZSBTcHJhY2h0eXBvbG9naWUiIGlzdCB1bnRlbiBPcmRuZXIgIlVtZnJhZ2UiIHp1IGZpbmRlbi4gQXXDn2VyZGVtIHNpbmQgbm9jaCAyMiBlcmhvYmVuZSBVbWZyYWdlYm9nZW4gYXVjaCBpbiBkZW1zZWxiZW4gT3JkbmVyIHp1IGZpbmRlbi4gCgoKIzMuIEVyZ2Vibmlzc2UgZGVyIFVtZnJhZ2UKCkRpZSBFcmdlYm5pc3NlIGRlciBVbWZyYWdlc8OkdHplIHNpbmQgenVlcnN0IG5hY2ggU3ByYWNoZSBhbmFseXNpZXJ0LiBEaWUgV29ydGZvbGdlIGluIFPDpHR6ZW4gdW5kIGRpZSBXb3J0c3RlbGx1bmcgaW0gTm9taW5hbHBocmFzZW4gc2luZCBuYWNoIGplZGVyIFNwcmFjaGUgc2VociBnZW5hdSBiZXLDvGNrc2ljaHRpZ3QuIERpZSBFcmdlYm5pc3NlIHNpbmQgYWxzIEV4Y2VsLURhdGVpICJVbWZyYWdlIEFuYWx5c2UiIHVudGVyIE9yZG5lciBzb3VyY2VzIHp1IGZpbmRlbi4gCgpGw7xyIGRpZSBBbmFseXNlIGluIFIgd2lyZCBkaWUgRXhjZWwtRGF0ZWkgIkRhdGVuX1VtZnJhZ2UiIGdlbnV0enQuIEluIGRpZXNlciBBbmFseXNlIHNpbmQgU3ByYWNoZSBuYWNoIExhbmQsIEdhdHR1bmcgdW5kIEZhbWlsaWUgenVlcnN0IGdlYWNodGV0LiBBdcOfZXJkZW0gc2luZCBMb25naXR1ZGUgdW5kIExhdGl0dWRlIHZvbiBkZXIgU3ByYWNoZSBuYWNoIFdhbHMuaW5mbyBmw7xyIGRhcyBFcnN0ZWxsZW4gZGVyIEthcnRlIGdlYWNodGV0LiBEaWUgQW5hbHlzZSB2b24gRGF0ZW4gc2luZCBhdcOfZXIgV29ydGZvbGdlIHVudGVyIHNlaHIgdmllbGUga2xlaW5lIEVsZW1lbnRwYWFyZSBnZXRlaWx0LCB3aWUgIkFkamVrdGl2ICsgTm9tZW4iLCAiTXVzaWsgKyBNb3phcnQiLCAiQXJ0aWtlbCArIE5vbWVuIiwgIkZhcmJlICsgTm9tZW4iLCAiTnVtZXJhbGUgKyBOb21lbiIsICJBcnRpa2VsICsgRmFyYmUiLCAiQXJ0aWtlbCArIE51bWVyYWxlIiwgIkFydGlrZWwgKyBBZGpla3RpdiIsICJGYXJiZSArIEFkamVrdGl2IiB1bmQgIkFkamVrdGl2ICsgQWRqZWt0aXYtVW1mcmFuZyIuIAoKSW0gRm9sZ2VuZGVuIHdlcmRlbiBuaWNodCBudXIgZGllIFZlcnRlaWx1bmcgZGVyIFdvcnRmb2xnZSB2b24gU3ViamVrdCwgT2JqZWt0IHVuZCBWZXJiIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4gaW4gV2VsdGthcnRlIGRhcmdlc3RlbGx0LCBzb25kZXJuIGF1Y2ggZGllIFdvcnRzdGVsbHVuZ2VuIGluIE5vbWluYWxwaHJhc2VuIHVuZCBkaWUgUmVpaGVuZm9sZ2Ugdm9uIHZlcnNjaGllZGVuZW4gQXJ0ZW4gZGVyIEFkamVrdGl2ZSBpbiBOb21pbmFscGhyYXNlIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4uIAoKIyMzLjEgRGllIFdvcnRmb2xnZSB2b24gU3ViamVrdCwgT2JqZWt0IHVuZCBWZXJiIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4KCkbDvHIgZGllIFdvcnRmb2xnZW4gdm9uIFN1Ympla3QsIE9iamVrdCB1bmQgVmVyYiB3ZXJkZW4gbmljaHQgbnVyIG5hY2ggZGVtIFNhdHogMSAiSWNoIGtvY2hlIFN1cHBlIiBmZXN0Z2VzdGVsbHQsIHNvbmRlcm4gYXVjaCBhbGxlIHdlaXRlcmUgbmV1biBTw6R0emUgdm9uIFVtZnJhZ2Vib2dlbi4gCgojIyMjIEthcnRlIDM6IERpZSBXb3J0Zm9sZ2Ugdm9uIFN1Ympla3QsIE9iamVrdCB1bmQgVmVyYiBkZXIgZXJob2JlbmVuIFNwcmFjaGVuCgpgYGB7cn0KdGFibGUoRGF0ZW4kV29ydGZvbGdlKQpgYGAKCk1pdCBkZXIgRnVua3Rpb24gInRhYmxlKCkiIGvDtm5uZW4gd2lyIGRpZSBWZXJ0ZWlsdW5nIGRlciBXb3J0Zm9sZ2Ugdm9uIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4gc2VoZW4uIEluIGRpZXNlbiBTcHJhY2hlbiBnaWJ0IGVzIGluc2dlc2FtdCBzZWNocyBTcHJhY2hlLCBkaWUgIlN1Ympla3QtT2JqZWt0LVZlcmIgKFNPVikiIFdvcnRmb2xnZSBoYWJlbiB1bmQgaW5zZ2VzYW10IDIwIFNwcmFjaGUsIGRpZSAiU3ViamVrdC1WZXJiLU9iamVrdCAoU1ZPKSIgV29ydGZvbGdlIGhhYmVuLiAKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgInJlZCIpCm15Y29scyA8LSBjb2xzW0RhdGVuJFdvcnRmb2xnZV0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCkKV29ydGZvbGdlIDwtIG15c3ltYm9sc1tEYXRlbiRXb3J0Zm9sZ2VdCgpmcmVxIDwtIHRhYmxlKERhdGVuJFdvcnRmb2xnZSkKbXluYW1lIDwtIGMoCiAgICAgIHBhc3RlMCgiU09WLVNwcmFjaGUgKCIsIGZyZXFbMV0sICIpIikKICAgICwgcGFzdGUwKCJTVk8tU3ByYWNoZSAoIiwgZnJlcVsyXSwgIikiKQogICAgKQoKcG9pbnRzKERhdGVuJExvbmdpdHVkZSwgRGF0ZW4kTGF0aXR1ZGUKICAgICAgICwgcGNoID0gV29ydGZvbGdlCiAgICAgICAsIGNvbCA9IG15Y29scykKCnRpdGxlKG1haW4gPSAiRGllIFdvcnRmb2xnZSB2b24gU3ViamVrdCwgT2JqZWt0IHVuZCBWZXJiIApkZXIgZXJob2JlbmVuIFNwcmFjaGVuIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IFdvcnRmb2xnZQogICAgICAgICwgY29sID0gY29scwogICAgICAgICwgY2V4ID0gMC43CiAgICAgICAgLCBwdC5jZXggPSAxLjUpCmBgYAoKQXVmIGRlciBLYXJ0ZSAzICJEaWUgV29ydGZvbGdlIHZvbiBTdWJqZWt0LCBPYmpla3QgdW5kIFZlcmIgZGVyIGVyaG9iZW5lbiBTcHJhY2hlbiIgc2luZCBhbGxlIDYgU09WLVNwcmFjaGUgaW4gYmxhdWVuIFDDvG5rdGNoZW4gdW5kIGFsbGUgMjAgU1ZPLVNwcmFjaGUgaW4gcm90ZW4gUMO8bmt0Y2hlbiBhdWYgZGVyIFdlbHRrYXJ0ZSBnZXRlaWx0LiBEaWVzZSBLYXJ0ZSBnaWJ0IG1hbiBlaW5lbiBndXRlbiDDnGJlcmJsaWNrIMO8YmVyIGRpZSBWZXJ0ZWlsdW5nIHZvbiBXb3J0Zm9sZ2Ugdm9uIGFsbGVuIGVyaG9iZW5lbiBTcHJhY2hlbi4gCgoKIyMzLjIgRGllIFdvcnRzdGVsbHVuZ2VuIGluIE5vbWluYWxwaHJhc2VuIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4KCkRpZSBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiB3ZXJkZW4gZGllIEVsZW1lbnRlIGltbWVyIGltIFDDpHJjaGVuIHZlcmdsZWljaHQgdW5kIGRhcmdlc3RlbGx0OiBkaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlLCBkaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UsIGRpZSBSZWloZW5mb2xnZSB2b24gRmFyYmUgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UsIGRpZSBSZWloZW5mb2xnZSB2b24gTnVtZXJhbGUgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UgdW5kIGRpZSBSZWloZW5mb2xnZSB2b24gR2VuaXRpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZS4gCgpBdcOfZXJkZW0gd2VyZGVuIGRpZSBXb3J0c3RlbGx1bmdlbiB2b24gZGVuIHZlcnNjaGllZGVuZW4gQXJ0ZW4gZGVyIEFkamVrdGl2ZSBpbiBOb21pbmFscGhyYXNlIGF1Y2ggZGFyZ2VzdGVsbHQ6IGRpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgRmFyYmUsIGRpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgTnVtZXJhbGUsIGRpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgQWRqZWt0aXYsIGRpZSBSZWloZW5mb2xnZSB2b24gRmFyYmUgdW5kIEFkamVrdGl2IHVuZCBkaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBVbWZhbmdzYWRqZWt0aXYgaW4gTm9taW5hbHBocmFzZW4uCgojIyMgMy4yLjEgRGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZQoKVW0gZGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgTm9tZW4gdm9uIGRlbiBlcmhvYmVuZW4gU3ByYWNoZW4gZmVzdHp1bGVnZW4sIHd1cmRlbiBkaWVzZW4gU2F0enRlaWxlbiBiZXLDvGNrc2ljaHRpZ3Q6ICJncm/Dn2UgSMOkdXNlciIsICJzY2jDtm5lbiBncm/Dn2VuIEJhbGwiLCAia2xlaW5lIEh1bmRlIiB1bmQgImZldWNodGVzIEhvbHoiLiBOdXIgd2VubiBkaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBOb21lbiBpbiBkaWVzZW4gdmllciBTYXR6dGVpbGVuIGlkZW50aXNjaCBzaW5kLCB3dXJkZSBkaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlIGRlciBTcHJhY2hlIGJlc3RpbW10LiAKCmBgYHtyfQp0YWJsZShEYXRlbiRBZGpla3Rpdi5Ob21lbikKYGBgCgpNaXQgRnVua3Rpb24gInRhYmxlKCkiIHNlaGVuIHdpciwgZGFzcyBpbnNnZXNhbXQgMTcgU3ByYWNoZW4gZWluZSBSZWloZW5mb2xnZSAiQWRqZWt0aXYgdm9yIGRlbSBOb21lbiIgaW4gTm9taW5hbHBocmFzZSBoYWJlbiwgdW5kIDcgU3ByYWNoZW4gZWluZSBSZWloZW5mb2xnZW4gIk5vbWVuIHZvciBkZW0gQWRqZWt0aXYiIGluIE5vbWluYWxwaHJhc2UgaGFiZW4uIEF1w59lcmRlbSBnaWJ0IGVzIHp3ZWkgU3ByYWNoZW4sIG7DpG1saWNoIEZyYW56w7ZzaXNjaCB1bmQgSW5kb25lc2lzY2gsIGtlaW5lIGRvbWluYW50ZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UuICAKCiMjIyMgS2FydGUgNDogRGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZQoKYGBge3J9Cm1hcHM6Om1hcCgid29ybGQiCiAgICAgICAgICAsaW50ZXJpb3IgPSBGQUxTRQogICAgICAgICAgLCBjb2wgPSAiZ3JleSIKICAgICAgICAgICwgcmVzb2x1dGlvbiA9IDApCgpjb2xzIDwtIGMoInJlZCIsICJibHVlIiwgImdyZWVuMyIpCm15Y29sczEgPC0gY29sc1tEYXRlbiRBZGpla3Rpdi5Ob21lbl0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCwgMjApCkFkak5vbiA8LSBteXN5bWJvbHNbRGF0ZW4kQWRqZWt0aXYuTm9tZW5dCgpteW5hbWUgPC0gYygiQWRqZWt0aXYgdm9yIE5vbWVuICgxNykiLCAiTm9tZW4gdm9yIEFkamVrdGl2ICg3KSIsICJCZWlkZXMgKDIpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBZGpOb24KICAgICAgICwgY29sID0gbXljb2xzMSkKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZSIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBBZGpOb24KICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCkF1ZiBkZXIgS2FydGUgNCAiRGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZSIgd2VyZGVuIGRpZSAxNyBTcHJhY2hlbiBtaXQgZGVyIFJlaWhlbmZvbGdlICJBZGpla3RpdiB2b3IgTm9tZW4iIGluIHJvdGVuIFDDvG5rdGNoZW4gbWFya2llcnQgdW5kIDcgU3ByYWNoZW4gbWl0IGRlciBSZWloZW5mb2xnZSAiTm9tZW4gdm9yIEFkamVrdGl2IiBpbiBibGF1ZW4gUMO8bmt0Y2hlbiBtYXJraWVydC4gTWl0IGdyw7xuZW4gUMO8bmt0Y2hlbiBzaW5kIGRpZSBGcmFuesO2c2lzY2hlbiB1bmQgSW5kb25lc2lzY2hlbiBtYXJraWVydC4gCgpJbiBGcmFuesO2c2lzY2ggc2luZCBkaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlIG5pY2h0IGltbWVyIGdsZWljaCwgd2llIHp1bSBCZWlzcGllbDoKLSBBcnRpa2VsICsgQWRqZWt0aXYgKyBOb21lbiAoYWxzIFN1Ympla3QpCi0gICAgbGVzICAgICBwZXRpdHMgICAgY2hpZW5zCi0gICBkaWUgICAgIGtsZWluZW4gICBIdW5kZQoKLSBBcnRpa2VsICsgTm9tZW4gKyBBZGpla3RpdiAoYWxzIFN1Ympla3QpCi0gICBsZSAgICAgIGJvaXMgICAgaHVtaWRlCi0gICBkYXMgICAgIEhvbHogICBmZXVjaHRlCgpJbiBJbmRvbmVzaXNjaGVuIHdlY2hzZWx0IHNpY2ggZGllIFJlaWhlbmZvbGdlIHZvbiBBZGpla3RpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZSBhdWNoIGltbWVyIHdpZWRlciwgYmVpc3BpZWxzd2Vpc2U6Ci0gTm9tZW4gKyBBZGpla3RpdiArIEFydGlrZWwKLSAgcnVtYWggICAgYmVzYXIgICAgIGluaQotICBIw6R1c2VyICAgIGdyb8OfICAgICBkYXMKCi0gQWRqZWt0aXYgKyBOb21lbgotICBrZWNpbCAgICBhbmppbmcKLSAga2xlaW4gICAgIEh1bmQKCkRhZHVyY2ggZGFzcyBkaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlIGbDvHIgRnJhbnrDtnNpc2NoZW4gdW5kIEluZG9uZXNpc2NoZW4gYmVpZGVzIG3DtmdsaWNoIGlzdCwgd3VyZGVuIGRlbiBUeXAgZGllc2VyIFJlaWhlbmZvbGdlIGhpZXIgYWxzICJCZWlkZXMiIGF1ZiBkZXIgS2FydGUgZ2VzdGVsbHQuIAoKCiMjIyAzLjIuMiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UKCkRpZSBXb3J0c3RlbGx1bmcgaW4gTm9taW5hbHBocmFzZW4gImRpZXNlIGbDvG5mIGdyb8OfZW4gSMOkdXNlciIgdW5kICJkYXMgZmV1Y2h0ZSBIb2x6IiB3dXJkZW4gZsO8ciBkaWUgRmVzdGxlZ3VuZyBkZXIgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UgYW5nZXNjaGF1dC4gTnVyIHdlbm4gZGllIFJlaWhlbmZvbGdlIHZvbiBkaWVzZW4gendlaSBOb21pbmFscGhyYXNlbiBpZGVudGlzY2ggc2luZCwga2FubiBtYW4gaWhyZSBSZWloZW5mb2xnZSBmZXN0bGVnZW4uIAoKYGBge3J9CnRhYmxlKERhdGVuJEFydGlrZWwuTm9tZW4pCmBgYAoKRHVyY2ggZGllIEZ1bmt0aW9uICJ0YWJsZSgpIiBzaWVodCBtYW4sIGRhc3MgaW5zZ2VzYW10IDIzIFNwcmFjaGVuIGVpbmUgUmVpaGVuZm9sZ2UgIkFydGlrZWwgdm9yIE5vbWVuIiBoYXQgdW5kIG51ciBpbiB6d2VpIFNwcmFjaGVuICJOb21lbiB2b3IgQXJ0aWtlbCIgaXN0LiBJbiBkZW0gw5xiZXJzZXR6dW5nc2JvZ2VuIHZvbiBQZXJzaXNjaCBnYWIgZXMgbGVpZGVyIGtlaW5lbiBBcnRpa2VsLCBkYWhlciB3dXJkZSBkaWVzZSBSZWloZW5mb2xnZSBmw7xyIFBlcnNpc2NoZW4gYWxzICJuaWNodCBrbGFyIiBkYXJnZXN0ZWxsdC4gCgojIyMjIEthcnRlIDU6IERpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZQoKYGBge3J9Cm1hcHM6Om1hcCgid29ybGQiCiAgICAgICAgICAsaW50ZXJpb3IgPSBGQUxTRQogICAgICAgICAgLCBjb2wgPSAiZ3JleSIKICAgICAgICAgICwgcmVzb2x1dGlvbiA9IDApCgpjb2xzIDwtIGMoInJlZCIsICJibHVlIiwgImdyZWVuMyIpCm15Y29sczIgPC0gY29sc1tEYXRlbiRBcnRpa2VsLk5vbWVuXQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCkKQXJ0Tm9uIDwtIG15c3ltYm9sc1tEYXRlbiRBcnRpa2VsLk5vbWVuXQoKbXluYW1lIDwtIGMoIkFydGlrZWwgdm9yIE5vbWVuICgyMykiLCAiTm9tZW4gdm9yIEFydGlrZWwgKDIpIiwgIk5pY2h0IEtsYXIgKDEpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBcnROb24KICAgICAgICwgY29sID0gbXljb2xzMikKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEFydE5vbgogICAgICAgICwgY29sID0gY29scwogICAgICAgICwgY2V4ID0gMC43CiAgICAgICAgLCBwdC5jZXggPSAxLjUpCmBgYAoKTWl0IEthcnRlIDUgc2VoZW4gd2lyLCBkYXNzIGRpZSBkb21pbmFudGUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIE5vbWVuIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4gIkFydGlrZWwgdm9yIE5vbWVuIiBpc3QuIEplZG9jaCBnaWJ0IGVzIG5vY2ggendlaSBTcHJhY2hlbjogVmlldG5hbWVzaXNjaCB1bmQgSW5kb25lc2lzY2gsIGluIGRlbmVuIGRpZSBkb21pbmFudGUgUmVpaGVuZm9sZ2UgIk5vbWVuIHZvciBBcnRpa2VsIiBpc3QuIFdpZSBpbiBOb21pbmFscGhyYXNlICJkaWVzZSBmw7xuZiBncm/Dn2VuIEjDpHVzZXIiOgoKLSBJbiBWaWV0bmFtZXNpc2NoOiAKLSBOdW1lcmFsZSArIE5vbWVuICsgQWRqZWt0aXYgKyBBcnRpa2VsCi0gICAgbsSDbSAgICAgbmfDtGkgICAgbmjDoCBs4bubbiAgICAgbsOgeSAgICAgICAgICAKLSAgICBmw7xuZiAgIEjDpHVzZXIgICBncm/Dn2VuICAgICAgZGllcwoKLSBJbiBJbmRvbmVzaXNjaGVuOiAKLSBOdW1lcmFsZSArIE5vbWVuICsgQWRqZWt0aXYgKyBBcnRpa2VsCi0gIGxpbWEgICAgIHJ1bWFoICAgICBiZXNhciAgICAgaW5pICAgICAgICAgICAgICAgCi0gIGbDvG5mICAgICBIw6R1c2VyICAgIGdyb8OfICAgICAgZGFzCgoKIyMjIDMuMi4zIERpZSBSZWloZW5mb2xnZSB2b24gRmFyYmUgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UgInJvdGVyIEJhbGwiCgpEaWUgUmVpaGVuZm9sZ2Ugdm9uIEZhcmJlIHVuZCBOb21lbiB3dXJkZSBudXIgbWl0ICJyb3QgKyBCYWxsIiBpbiBkZXIgTm9taW5hbHBocmFzZSAiZWluZW4gc2Now7ZuZW4gZ3Jvw59lbiByb3RlbiBCYWxsIiBiZXLDvGNrc2ljaHRpZ3QuIAoKYGBge3J9CnRhYmxlKERhdGVuJEZhcmJlLk5vbWVuKQpgYGAKClRyb3R6ZGVtIGVyZ2lidCBzaWNoIGVpbmUga2xhcmUgVW50ZXJzY2hpZWRlbiB2b24gZGllc2VuIFNwcmFjaGVuLCBlcyBnaWJ0IGluc2dlc2FtdCAxOCBTcHJhY2hlbiBtaXQgZGVyIFJlaWhlbmZvbGdlICJGYXJiZSArIE5vbWVuIiB1bmQgOCBTcHJhY2hlbiAiTm9tZW4gKyBGYXJiZSIuIAoKIyMjIyBLYXJ0ZSA2OiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEZhcmJlIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlOiByb3RlciBCYWxsCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygicmVkIiwgImJsdWUiKQpteWNvbHMzIDwtIGNvbHNbRGF0ZW4kRmFyYmUuTm9tZW5dCgpteXN5bWJvbHMgPC0gYygyMCwgMjApCkZhcmJOb24gPC0gbXlzeW1ib2xzW0RhdGVuJEZhcmJlLk5vbWVuXQoKbXluYW1lIDwtIGMoIkZhcmJlIHZvciBOb21lbiAoMTgpIiwgIk5vbWVuIHZvciBGYXJiZSAoOCkiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IEZhcmJOb24KICAgICAgICwgY29sID0gbXljb2xzMykKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBGYXJiZSB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZTogcm90ZXIgQmFsbCIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBGYXJiTm9uCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgpBdWYgZGVyIEthcnRlIDYgIkRpZSBSZWloZW5mb2xnZSB2b24gRmFyYmUgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2U6IHJvdGVyIEJhbGwiIHNpbmQgZGllIDE4IFNwcmFjaGVuIGbDvHIgIkZhcmJlIHZvciBOb21lbiIgbWl0IHJvdGVuIFDDvG5rdGNoZW4gbWFya2llcnQgdW5kIGJsYXVlbiBQw7xua3RjaGVuIGbDvHIgZGllICJOb21lbiB2b3IgRmFyYmUiIFNwcmFjaGVuLiAgCgoKIyMjIDMuMi40IERpZSBSZWloZW5mb2xnZSB2b24gTnVtZXJhbGVuIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlICJmw7xuZiBIw6R1c2VyIgoKRsO8ciBkaWUgUmVpaGVuZm9sZ2Ugdm9uIE51bWVyYWxlIHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlIHd1cmRlIG51ciBkdXJjaCBkaWUgV29ydHN0ZWxsdW5nIGluICJkaWVzZSBmw7xuZiBncm/Dn2VuIEjDpHVzZXIiIGZlc3RnZWxlZ3QuIEhpZXIgZ2lidCBlcyBrZWluZSBBdXNuYWhtZSwgYWxsZSBlcmhvYmVuZSAyNiBTcHJhY2hlbiBoYWJlbiBkaWUgUmVpaGVuZm9sZ2UgIk51bWVyYWxlIHZvciBOb21lbiIuCgpgYGB7cn0KdGFibGUoRGF0ZW4kTnVtZXJhbC5Ob21lbikKYGBgCgojIyMjIEthcnRlIDc6IERpZSBSZWloZW5mb2xnZSB2b24gTnVtZXJhbGUgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2U6IGbDvG5mIEjDpHVzZXIKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgInJlZCIpCm15Y29sczQgPC0gY29sc1tEYXRlbiROdW1lcmFsLk5vbWVuXQoKbXlzeW1ib2xzIDwtIGMoMjApCk51bU5vbiA8LSBteXN5bWJvbHNbRGF0ZW4kTnVtZXJhbC5Ob21lbl0KCm15bmFtZSA8LSBjKCJOdW1lcmFsZSB2b3IgTm9tZW4gKDI2KSIsICJOb21lbiB2b3IgTnVtZXJhbGUgKDApIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBOdW1Ob24KICAgICAgICwgY29sID0gbXljb2xzNCkKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBOdW1lcmFsZSB1bmQgTm9tZW4gCmluIE5vbWluYWxwaHJhc2U6IGbDvG5mIEjDpHVzZXIiKQoKbGVnZW5kICgiYm90dG9tbGVmdCIKICAgICAgICAsIGxlZ2VuZCA9IG15bmFtZQogICAgICAgICwgcGNoID0gTnVtTm9uCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgpJbiBhbGxlbiBlcmhvYmVuZW4gU3ByYWNoZW4gc2luZCBOdW1lcmFsZSB2b3IgTm9tZW4gaW4gTm9taW5hbHBocmFzZSAiZsO8bmYgSMOkdXNlciIsIGhpZXIgZ2lidCBlcyBrZWluZSBBdXNuYWhtZSB1bmQgc2luZCBhdWYgZGVyIEthcnRlIDcgbWl0IGJsYXVlbiBQw7xua3RjaGVuIG1hcmtpZXJ0LgoKCiMjIyAzLjIuNSBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEdlbml0aXYgdW5kIE5vbWVuIGluIE5vbWluYWxwaHJhc2UgIk11c2lrIHZvbiBNb3phcnQiCgpEdXJjaCBkaWUgTm9taW5hbHBocmFzZSAiTXVzaWsgdm9uIE1vemFydCIga2FubiBtYW4gZGllIFdvcnRmb2xnZSB2b24gR2VuaXRpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZSB2b24gZGVuIGVyaG9iZW5lbiBTcHJhY2hlbiBmZXN0bGVnZW4uIAoKYGBge3J9CnRhYmxlKERhdGVuJE11c2lrLk1vemFydCkKYGBgCgpFcyBlcmdpYnQgc2ljaCBkcmVpIE3DtmdsaWNoa2VpdGVuOiAxNSBTcHJhY2hlbiBtaXQgIk5vbWVuIHZvciBHZW5pdGl2IiwgOSBTcHJhY2hlbiBtaXQgIkdlbml0aXYgdm9yIE5vbWVuIiB1bmQgendlaSBTcHJhY2hlbiBtaXQgIm5pY2h0IGtsYXIiLiBEaWVzZSB6d2VpIFNwcmFjaGVuIHNpbmQgR2Vvcmdpc2NoIHVuZCBQZXJzaXNjaC4gSW4gZGllc2VuIGJlaWRlbiBTcHJhY2hlbiB3dXJkZW4gZGllc2UgTm9taW5hbHBocmFzZSBudXIgbWl0IGVpbmVtIFdvcnQgw7xiZXJzZXR6dC4gSW4gR2Vvcmdpc2NoZW4gaXN0ICJtb2NhcnRzIiB1bmQgaW4gUGVyc2lzY2hlbiBpc3QgIk1vemFydCIuIERhaGVyIHd1cmRlIGlocmUgUmVpaGVuZm9sZ2UgaGllciBhbHMgIm5pY2h0IGtsYXIiIGdlemVpY2huZXQuCgojIyMjIEthcnRlIDg6IERpZSBSZWloZW5mb2xnZSB2b24gR2VuaXRpdiB1bmQgTm9tZW4gaW4gTm9taW5hbHBocmFzZTogTXVzaWsgdm9uIE1vemFydAoKYGBge3J9Cm1hcHM6Om1hcCgid29ybGQiCiAgICAgICAgICAsaW50ZXJpb3IgPSBGQUxTRQogICAgICAgICAgLCBjb2wgPSAiZ3JleSIKICAgICAgICAgICwgcmVzb2x1dGlvbiA9IDApCgpjb2xzIDwtIGMoInJlZCIsICJibHVlIiwgImdyZWVuMyIpCm15Y29sczUgPC0gY29sc1tEYXRlbiRNdXNpay5Nb3phcnRdCgpteXN5bWJvbHMgPC0gYygyMCwgMjAsIDIwKQpNdU1vIDwtIG15c3ltYm9sc1tEYXRlbiRNdXNpay5Nb3phcnRdCgpteW5hbWUgPC0gYygiR2VuaXRpdiB2b3IgTm9tZW4gKDkpIiwgIk5vbWVuIHZvciBHZW5pdGl2ICgxNSkiLCAiTmljaHQga2xhciAoMikiKQoKcG9pbnRzIChEYXRlbiRMb25naXR1ZGUsIERhdGVuJExhdGl0dWRlCiAgICAgICAsIHBjaCA9IE11TW8KICAgICAgICwgY29sID0gbXljb2xzNSkKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBHZW5pdGl2IHVuZCBOb21lbgppbiBOb21pbmFscGhyYXNlOiBNdXNpayB2b24gTW96YXJ0IikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IE11TW8KICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCkF1ZiBkZXIgS2FydGUgOCAiRGllIFJlaWhlbmZvbGdlIHZvbiBHZW5pdGl2IHVuZCBOb21lbiBpbiBOb21pbmFscGhyYXNlOiBNdXNpayB2b24gTW96YXJ0IiBzaW5kICJHZW5pdGl2IHZvciBOb21lbiIgU3ByYWNoZW4gbWl0IHJvdGVuIFDDvG5rdGNoZW4gbWFya2llcnQgdW5kIGJsYXVlbiBQw7xua3RjaGVuIGbDvHIgZGllICJOb21lbiB2b3IgR2VuaXRpdiIgU3ByYWNoZW4gdW5kIGdyw7xuZW4gUMO8bmt0Y2hlbiBmw7xyICJuaWNodCBrbGFyIiBTcHJhY2hlLiAgCgoKIyMzLjMgRGllIFJlaWhlbmZvbGdlIHZvbiB2ZXJzY2hpZWRlbmVuIEFydGVuIGRlciBBZGpla3RpdmUgaW4gTm9taW5hbHBocmFzZQoKRHVyY2ggZGllIFZlcmdsZWljaGUgdm9uIFdvcnRzdGVsbHVuZ2VuIGluIE5vbWluYWxwaHJhc2VuIGlzdCBlcyBtaXIgYXVmZ2VmYWxsZW4sIGRhc3MgdmllbGUgUmVpaGVuZm9sZ2VuIHZvbiB2ZXJzY2hpZWRlbmVuIEFydGVuIGRlciBBZGpla3RpdmUgaW4gTm9taW5hbHBocmFzZW4gYXVjaCBzZWhyIHZpZWxmw6RsdGlnIHNpbmQuIEhpZXJtaXQgd2VyZGVuIGRpZXNlIFVudGVyc2NoaWVkZW4gZGVyIFJlaWhlbmZvbGdlbiB2b24gQWRqZWt0aXZlbiBkYXJnZXN0ZWxsdC4gCgojIyMgMy4zLjEgRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBGYXJiZSBpbiBOb21pbmFscGhyYXNlICJlaW5lbiByb3RlbiBCYWxsIgoKRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBGYXJiZSB3dXJkZSB2b24gTm9taW5hbHBocmFzZSAiZWluZW4gc2Now7ZuZW4gZ3Jvw59lbiByb3RlbiBCYWxsIiBiZXN0aW1tdCwgaGllciB3aXJkIGRpZSBXb3J0c3RlbGx1bmcgdm9uICJlaW4iIHVuZCAicm90IiBnZW5hdSBhbmdlc2NoYXV0LiBFcyBlcmdpYnQgc2ljaCBkcmVpIE3DtmdsaWNoa2VpdGVuLCAiQXJ0aWtlbCB2b3IgRmFyYmUiLCAiRmFyYmUgdm9yIEFydGlrZWwiIHVuZCAibmljaHQga2xhciIuIAoKYGBge3J9CnRhYmxlKERhdGVuJEFydGlrZWwuRmFyYmUpCmBgYAoKSW4gbWVpc3RlbiBlcmhvYmVuZW4gU3ByYWNoZW4gaXN0IGRlciBBcnRpa2VsIHZvciBBZGpla3RpdiBGYXJiZSwgbnVyIGluIGVpbmVyIFNwcmFjaGUgR2Vvcmdpc2NoIGlzdCBkYXMgQWRqZWt0aXYgRmFyYmUgdm9yIGRlbSBBcnRpa2VsLiBBdcOfZXJkZW0gaXN0IGRpZXNlIFJlaWhlbmZvbGdlIHZvbiBzaWViZW4gU3ByYWNoZW4gbmljaHQga2xhciwgZGVubiBlaW4gcGFhciBJbmZvcm1hbnRlbiBoYXR0ZW4gaW4gZGllc2VtIFNhdHoga2VpbmVuIEFydGlrZWwgZ2VzY2hyaWViZW4uIAoKIyMjIyBLYXJ0ZSA5OiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIEZhcmJlIGluIE5vbWluYWxwaHJhc2U6IGVpbmVuIHJvdGVuIEJhbGwKCmBgYHtyfQptYXBzOjptYXAoIndvcmxkIgogICAgICAgICAgLGludGVyaW9yID0gRkFMU0UKICAgICAgICAgICwgY29sID0gImdyZXkiCiAgICAgICAgICAsIHJlc29sdXRpb24gPSAwKQoKY29scyA8LSBjKCJibHVlIiwgInJlZCIsICJncmVlbjMiKQpteWNvbHM2IDwtIGNvbHNbRGF0ZW4kQXJ0aWtlbC5GYXJiZV0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCwgMjApCkFydEZhIDwtIG15c3ltYm9sc1tEYXRlbiRBcnRpa2VsLkZhcmJlXQoKbXluYW1lIDwtIGMoIkFydGlrZWwgdm9yIEZhcmJlICgyOCkiLCAiRmFyYmUgdm9yIEFydGlrZWwgKDEpIiwgIk5pY2h0IGtsYXIgKDcpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBcnRGYQogICAgICAgLCBjb2wgPSBteWNvbHM2KQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIEZhcmJlIAppbiBOb21pbmFscGhyYXNlOiBlaW5lbiByb3RlbiBCYWxsIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEFydEZhCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgpBdWYgZGVyIEthcnRlIDkgIkRpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgRmFyYmUgaW4gTm9taW5hbHBocmFzZTogZWluZW4gcm90ZW4gQmFsbCIgc2luZCAiQXJ0aWtlbCB2b3IgRmFyYmUiIFNwcmFjaGVuIG1pdCBibGF1ZW4gUMO8bmt0Y2hlbiBtYXJraWVydCB1bmQgcm90ZW4gUMO8bmt0Y2hlbiBmw7xyIGRpZSAiRmFyYmUgdm9yIEFydGlrZWwiIFNwcmFjaGUgR2Vvcmdpc2NoIHVuZCBncsO8bmVuIFDDvG5rdGNoZW4gZsO8ciBhbGxlICJuaWNodCBrbGFyIiBTcHJhY2hlLiAgCgoKIyMjIDMuMy4yIERpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgTnVtZXJhbGUgaW4gTm9taW5hbHBocmFzZSAiZGllc2UgZsO8bmYgSMOkdXNlciIKCkRpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgTnVtZXJhbGUgd3VyZGUgaW4gTm9taW5hbHBocmFzZSAiZGllc2UgZsO8bmYgZ3Jvw59lbiBIw6R1c2VyIiBnZW5hdSBhbmdlc2NoYXV0LiBEdXJjaCBkaWUgQW5hbHlzZSBpbiAzLjIuNCBlcmdpYnQgc2ljaCwgZGFzcyBpbiBhbGxlbiBlcmhvYmVuZW4gU3ByYWNoZW4gTnVtZXJhbGUgdm9yIE5vbWVuIHN0ZWh0LiBEaWUgQW5hbHlzZSB2b24gMy4yLjIgemVpZ3QgdW5zLCBkYXNzIGluIDIzIFNwcmFjaGVuIEFydGlrZWwgdm9yIE5vbWVuIHN0ZWh0IHVuZCBpbiAyIFNwcmFjaGVuIE5vbWVuIHZvciBBcnRpa2VsIHN0ZWh0LiAKCmBgYHtyfQp0YWJsZShEYXRlbiRBcnRpa2VsLk51bWVyYWwpCmBgYAoKRGllIEFuYWx5c2UgaGllciB6ZWlndCB1bnMsIGRhc3MgaW4gaW5zZ2VzYW10IDIxIFNwcmFjaGVuIGRlciBBcnRpa2VsIHZvciBkZW0gTnVtZXJhbGUgc3RlaHQsIGFiZXIgaW4gdmllciBTcHJhY2hlbiBzdGVodCBkYXMgTnVtZXJhbGUgdm9yIGRlbSBBcnRpa2VsLiBCZWkgUGVyc2lzY2hlbiBpc3QgZGllc2UgUmVpaGVuZm9sZ2UgbmljaHQga2xhciwgZGEgZGllIEluZm9ybWF0aW9uIGZlaGx0LgoKIyMjIyBLYXJ0ZSAxMDogRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBOdW1lcmFsZSBpbiBOb21pbmFscGhyYXNlOiBkaWVzZSBmw7xuZiBIw6R1c2VyCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygiYmx1ZSIsICJncmVlbjMiLCAicmVkIikKbXljb2xzNyA8LSBjb2xzW0RhdGVuJEFydGlrZWwuTnVtZXJhbF0KCm15c3ltYm9scyA8LSBjKDIwLCAyMCwgMjApCkFydE51bSA8LSBteXN5bWJvbHNbRGF0ZW4kQXJ0aWtlbC5OdW1lcmFsXQoKbXluYW1lIDwtIGMoIkFydGlrZWwgdm9yIE51bWVyYWxlICgyMSkiLCAiTmljaHQga2xhciAoMSkiLCAiTnVtZXJhbGUgdm9yIEFydGlrZWwgKDQpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBcnROdW0KICAgICAgICwgY29sID0gbXljb2xzNykKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBOdW1lcmFsZQppbiBOb21pbmFscGhyYXNlOiBkaWVzZSBmw7xuZiBIw6R1c2VyIikKCmxlZ2VuZCAoImJvdHRvbWxlZnQiCiAgICAgICAgLCBsZWdlbmQgPSBteW5hbWUKICAgICAgICAsIHBjaCA9IEFydE51bQogICAgICAgICwgY29sID0gY29scwogICAgICAgICwgY2V4ID0gMC43CiAgICAgICAgLCBwdC5jZXggPSAxLjUpCmBgYAoKV2llIGF1ZiBhbmRlcmVuIEthcnRlIGlzdCBlcyBhdWYgS2FydGUgMTAgIkRpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgTnVtZXJhbGUgaW4gTm9taW5hbHBocmFzZTogZGllc2UgZsO8bmYgSMOkdXNlciIgYXVjaCBtaXQgZmFyYmlnZW4gUMO8bmt0Y2hlbiBkaWUgU3ByYWNoZW4gbWFya2llcnQgdW5kIGRhenUgZ2Vow7ZyaWdlIFphaGwgaW4gS2xhbW1lciBhbmdlZ2ViZW4uIAoKCiMjIyAzLjMuMyBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFydGlrZWwgdW5kIEFkamVrdGl2IGluIE5vbWluYWxwaHJhc2UgImRhcyBmZXVjaHRlIEhvbHoiCgpJbiBOb21pbmFscGhyYXNlICJkYXMgZmV1Y2h0ZSBIb2x6IiBnYWIgZXMgaW5zZ2VzYW10IDIyIFNwcmFjaGVuLCBpbiBkZW5lbiBkZXIgQXJ0aWtlbCB2b3IgZGVtIEFkamVrdGl2IHN0ZWh0LiBJbiBWaWV0bmFtZXNpc2NoZW4gdW5kIEluZG9uZXNpc2NoZW4gc2VodCBkYXMgQWRqZWt0aXYgYWJlciB2b3IgZGVtIEFydGlrZWwuIFdpZSBkaWVzZSBSZWloZW5mb2xnZSBpbiBCZXJiZXIgdW5kIFBlcnNpc2NoZW4gaXN0LCBpc3QgZXMgdW5rbGFyLiAKCmBgYHtyfQp0YWJsZShEYXRlbiRBcnRpa2VsLkFkamVrdGl2KQpgYGAKCiMjIyMgS2FydGUgMTE6IERpZSBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgQWRqZWt0aXYgaW4gTm9taW5hbHBocmFzZTogZGFzIGZldWNodGUgSG9segoKYGBge3J9Cm1hcHM6Om1hcCgid29ybGQiCiAgICAgICAgICAsaW50ZXJpb3IgPSBGQUxTRQogICAgICAgICAgLCBjb2wgPSAiZ3JleSIKICAgICAgICAgICwgcmVzb2x1dGlvbiA9IDApCgpjb2xzIDwtIGMoImJsdWUiLCAicmVkIiwgImdyZWVuMyIpCm15Y29sczggPC0gY29sc1tEYXRlbiRBcnRpa2VsLkFkamVrdGl2XQoKbXlzeW1ib2xzIDwtIGMoMjAsIDIwLCAyMCkKQXJ0QWRqIDwtIG15c3ltYm9sc1tEYXRlbiRBcnRpa2VsLkFkamVrdGl2XQoKbXluYW1lIDwtIGMoIkFkamVrdGl2IHZvciBBcnRpa2VsICgyMikiLCAiQXJ0aWtlbCB2b3IgQWRqZWt0aXYgKDIpIiwgIk5pY2h0IGtsYXIgKDIpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBcnRBZGoKICAgICAgICwgY29sID0gbXljb2xzOCkKCnRpdGxlKG1haW4gPSAiRGllIFJlaWhlbmZvbGdlIHZvbiBBcnRpa2VsIHVuZCBBZGpla3RpdiAKaW4gTm9taW5hbHBocmFzZTogZGFzIGZldWNodGUgSG9seiIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBBcnRBZGoKICAgICAgICAsIGNvbCA9IGNvbHMKICAgICAgICAsIGNleCA9IDAuNwogICAgICAgICwgcHQuY2V4ID0gMS41KQpgYGAKCldlbm4gd2lyIG5hY2ggZGVyIEFuYWx5c2Ugdm9uIGRlciBSZWloZW5mb2xnZSB2b24gQXJ0aWtlbCB1bmQgTm9tZW4gd2llZGVyIHp1csO8Y2tibGlja2VuLCBzdGVodCBOb21lbiB2b3IgZGVtIEFydGlrZWwgaW4gVmlldG5hbWVzaXNjaGVuIHVuZCBJbmRvbmVzaXNjaGVuLiBEYXMgemVpZ3QsIGRhc3MgZGllIFdvcnRzdGVsbHVuZ2VuIHZvbiBFbGVtZW50ZW4gaW4gZGVuIFNwcmFjaGVuIGRvY2ggc3RhcmsgbWl0IGVpbmFuZGVyIHZlcmJ1bmRlbiBzaW5kLiAKCgojIyMgMy4zLjQgRGllIFJlaWhlbmZvbGdlIHZvbiBGYXJiZSB1bmQgQWRqZWt0aXYgaW4gTm9taW5hbHBocmFzZSAic2Now7ZuZW4gcm90ZW4gQmFsbCIKCkRpZSBBbmFseXNlIHZvbiBkZXIgUmVpaGVuZm9sZ2Ugdm9uIGRlbSBBZGpla3RpdiBGYXJiZSAicm90IiB1bmQgQWRqZWt0aXYgInNjaMO2biIgaW4gTm9taW5hbHBocmFzZSAic2Now7ZuZW4gcm90ZW4gQmFsbCIgemVpZ3QgdW5zLCBkYXNzIGluIDIwIFNwcmFjaGVuIGRhcyBBZGpla3RpdiB2b3IgRmFyYmUgc3RlaHQgdW5kIGluIHNlY2hzIFNwcmFjaGVuIGdlbmF1IGFuZGVyc3J1bSBpc3QuIAoKYGBge3J9CnRhYmxlKERhdGVuJEZhcmJlLkFkamVrdGl2KQpgYGAKCgojIyMjIEthcnRlIDEyOiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBGYXJiZSBpbiBOb21pbmFscGhyYXNlOiBzY2jDtm5lbiByb3RlbiBCYWxsCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygiYmx1ZSIsICJyZWQiKQpteWNvbHM5IDwtIGNvbHNbRGF0ZW4kRmFyYmUuQWRqZWt0aXZdCgpteXN5bWJvbHMgPC0gYygyMCwgMjApCkZhQWRqIDwtIG15c3ltYm9sc1tEYXRlbiRGYXJiZS5BZGpla3Rpdl0KCm15bmFtZSA8LSBjKCJBZGpla3RpdiB2b3IgRmFyYmUgKDIwKSIsICJGYXJiZSB2b3IgQWRqZWt0aXYgKDYpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBGYUFkagogICAgICAgLCBjb2wgPSBteWNvbHM5KQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBGYXJiZSAKaW4gTm9taW5hbHBocmFzZTogc2Now7ZuZW4gcm90ZW4gQmFsbCIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBGYUFkagogICAgICAgICwgY29sID0gY29scwogICAgICAgICwgY2V4ID0gMC43CiAgICAgICAgLCBwdC5jZXggPSAxLjUpCmBgYAoKRGFzIEVyZ2VibmlzIGRlciBBbmFseXNlIGlzdCBhdWYgZGVyIEthcnRlIDEyICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBGYXJiZSBpbiBOb21pbmFscGhyYXNlOiBzY2jDtm5lbiByb3RlbiBCYWxsIiBwcsOkc2VudGllcnQuIEJsYXVlbiBQw7xua3RjaGVuIG1hcmtpZXJlbiBkaWUgIkFkamVrdGl2IHZvciBGYXJiZSIgU3ByYWNoZW4gdW5kIHJvdGVuIFDDvG5rdGNoZW4gbWFya2llcmVuIGRpZSAiRmFyYmUgdm9yIEFkamVrdGl2IiBTcHJhY2hlbi4gCgoKIyMjIDMuMy41IERpZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIFVtZmFuZ3NhZGpla3RpdiBpbiBOb21pbmFscGhyYXNlICJzY2jDtm5lbiBncm/Dn2VuIEJhbGwiCgpVbSBlaW5lbiBoaWVyYXJjaGlzY2hlbiBadXNhbW1lbmhhbmcgendpc2NoZW4gYWxsZW4gRWxlbWVudGVuIGluIE5vbWluYWxwaHJhc2UgenUgZmluZGVuLCB3dXJkZSBkaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2ICJzY2jDtm4iIHVuZCBVbWZhbmdzYWRqZWt0aXYgImdyb8OfIiBhdWNoIGFuYWx5c2llcnQuIAoKYGBge3J9CnRhYmxlKERhdGVuJEFkamVrdGl2LkFkamVrdGl2LlVtZmFuZykKYGBgCgpJbiAxNiBTcHJhY2hlbiBpc3QgInNjaMO2biIgdm9yICJncm/DnyIgaW4gTm9taW5hbHBocmFzZSAiZWluZW4gc2Now7ZuZW4gZ3Jvw59lbiByb3RlbiBCYWxsIiwgYWJlciBpbiA4IFNwcmFjaGVuIGlzdCAiZ3Jvw58iIHZvciAic2Now7ZuIi4gTGVpZGVyIGluIEhpbmRpIHVuZCBQZXJzaXNjaCBpc3QgZGllc2UgUmVpaGVuZm9sZ2UgbmljaHQga2xhciwgZGllIEluZm9ybWFudGluIGbDvHIgSGluZGkgaGF0dGUgZGFzIEFkamVrdGl2ICJncm/DnyIgdmVyZ2Vzc2VuIHp1IMO8YmVyc2V0emVuIHVuZCBkaWUgSW5mb3JtYW50aW4gZsO8ciBQZXJzaXNjaCBoYXR0ZSBkYXMgQWRqZWt0aXYgInNjaMO2biIgdmVyZ2Vzc2VuIHp1IMO8YmVyc2V0emVuLiAgCgojIyMjIEthcnRlIDEzOiBEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBVbWZhbmdzYWRqZWt0aXYgaW4gTm9taW5hbHBocmFzZTogc2Now7ZuZW4gZ3Jvw59lbiBCYWxsCgpgYGB7cn0KbWFwczo6bWFwKCJ3b3JsZCIKICAgICAgICAgICxpbnRlcmlvciA9IEZBTFNFCiAgICAgICAgICAsIGNvbCA9ICJncmV5IgogICAgICAgICAgLCByZXNvbHV0aW9uID0gMCkKCmNvbHMgPC0gYygiYmx1ZSIsICJyZWQiLCAiZ3JlZW4zIikKbXljb2xzMTAgPC0gY29sc1tEYXRlbiRBZGpla3Rpdi5BZGpla3Rpdi5VbWZhbmddCgpteXN5bWJvbHMgPC0gYygyMCwgMjAsIDIwKQpBZGpBZGpVIDwtIG15c3ltYm9sc1tEYXRlbiRBZGpla3Rpdi5BZGpla3Rpdi5VbWZhbmddCgpteW5hbWUgPC0gYygiVW1mYW5nc2FkamVrdGl2IHZvciBBZGpla3RpdiAoOCkiLCAiQWRqZWt0aXYgdm9yIFVtZmFuZ3NhZGpla3RpdiAoMTYpIiwgIk5pY2h0IGtsYXIgKDIpIikKCnBvaW50cyAoRGF0ZW4kTG9uZ2l0dWRlLCBEYXRlbiRMYXRpdHVkZQogICAgICAgLCBwY2ggPSBBZGpBZGpVCiAgICAgICAsIGNvbCA9IG15Y29sczEwKQoKdGl0bGUobWFpbiA9ICJEaWUgUmVpaGVuZm9sZ2Ugdm9uIEFkamVrdGl2IHVuZCBVbWZhbmdzYWRqZWt0aXYgCmluIE5vbWluYWxwaHJhc2U6IHNjaMO2bmVuIGdyb8OfZW4gQmFsbCIpCgpsZWdlbmQgKCJib3R0b21sZWZ0IgogICAgICAgICwgbGVnZW5kID0gbXluYW1lCiAgICAgICAgLCBwY2ggPSBBZGpBZGpVCiAgICAgICAgLCBjb2wgPSBjb2xzCiAgICAgICAgLCBjZXggPSAwLjcKICAgICAgICAsIHB0LmNleCA9IDEuNSkKYGBgCgpEaWUgS2FydGUgMTMgIkRpZSBSZWloZW5mb2xnZSB2b24gQWRqZWt0aXYgdW5kIFVtZmFuZ3NhZGpla3RpdiBpbiBOb21pbmFscGhyYXNlOiBzY2jDtm5lbiBncm/Dn2VuIEJhbGwiIHByw6RzZW50aWVydCBkYXMgRXJnZWJuaXMgZGVyIEFuYWx5c2Ugdm9uIGRlciBSZWloZW5mb2xnZSAic2Now7ZuICsgZ3Jvw58iIGluIE5vbWluYWxwaHJhc2UgImVpbmVuIHNjaMO2bmVuIGdyb8OfZW4gcm90ZW4gQmFsbCIuIAoKCiMjIDMuNCBadXNhbW1lbmZhc3N1bmcgCgpOYWNoIFBheW5lICYgSHVkZGxlc3RvbiAoMjAwMjogNDUzKSBpc3QgZGllIEhpZXJhcmNoaWUgdm9uIG1vZGlmaXppZXJlbmRlbiBBZGpla3RpdmVuIGluIEVuZ2xpc2NoOgotIEV2YWx1YXRpdmUgPiBHZW5lcmFsIFByb3BlcnR5ID4gQWdlID4gQ29sb3IgPiBQcm92ZW5hbmNlID4gTWFudWZhY3R1cmUgPiBUeXBlCgpHaWJ0IGVzIGJlaSBqZWRlciBTcHJhY2hlIGVpbmUgSGllcmFyY2hpZSBmw7xyIGRpZSBXb3J0c3RlbGx1bmcgaW4gTm9taW5hbHBocmFzZT8gV2llIHN0YXJrIGlzdCBkZW4gWnVzYW1tZW5oYW5nPyBEaWVzZSBGcmFnZW4ga2FubiBtYW4gbGVpZGVyIG5pY2h0IG51ciBtaXQgZGllc2VuIERhdGVuIHZvbiBkZW4gVW1mcmFnZW4gYW50d29ydGVuLiBKZWRvY2ggZ2lidCBlcyBlaW4gcGFhciBBbm1lcmt1bmdlbiwgZGllIHdpY2h0aWcgc2luZC4gRmFzdCBiZWkgamVkZXIgQW5hbHlzZSBnaWJ0IGVzIHZlcnNjaGllZGVuZSBWZXJ0ZWlsdW5nZW4sIGF1w59lciBiZWkgZGVyIFJlaWhlbmZvbGdlIHZvbiAiTnVtZXJhbGUgdW5kIE5vbWVuIiwgZGEgaGF0dGVuIGFsbGUgSW5mb3JtYW50ZW4gTnVtZXJhbGUgdm9yIE5vbWVuIMO8YmVyc2V0enQuICAKCkRpZSBBbmFseXNlbiB2b24gZWluemVsbmVyIFJlaWhlbmZvbGdlIGluIE5vbWluYWxwaHJhc2UgemVpZ3QgdW5zLCBkYXNzIGRpZXNlIFJlaWhlbmZvbGdlIGplZG9jaCBtaXRlaW5hbmRlciB2ZXJidW5kZW4gaXN0LiBXaWUgZGllc2UgWnVzYW1tZW5oYW5nZW4gendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiBzaW5kLCB3ZXJkZW4gd2VpdGVyaGluIHN0YXRpc3Rpc2NoIGFuYWx5c2llcnQuICAgCgoKIzQuIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQgZGVuIFdvcnRzdGVsbHVuZ2VuIGluIE5vbWluYWxwaHJhc2VuIGRlciBlcmhvYmVuZW4gU3ByYWNoZW4KCk5hY2ggR3JlZW5iZXJnICgxOTY2KSBzaW5kIGRvbWluYW50IE9yZGVyIHVuZCBIYXJtb25pZS1CZXppZWh1bmdlbiBmw7xyIEVya2zDpHJ1bmcgdm9uIFVuaXZlcnNhbGllbiBhbSBXaWNodGlnc3Rlbi4gTWl0IEdyZWVuYmVyZydzIEdlbmVyYWxpc2llcnVuZyBlcmtsw6RydGV0IG1hbiAiY3Jvc3MtbGluZ3Vpc3RpYy12YXJpYXRpb24iLCBkYXMgS29uemVwdCB2b24gImNvbXBldGluZyBtb3RpdmF0aW9ucyIuIAoKSW0gRm9sZ2VuZGVuIHdlcmRlbiBkaWUgWnVzYW1tZW5oYW5nZW4gendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBpbiBOb21pbmFscGhyYXNlbiBkZXIgZXJob2JlbmVuIFNwcmFjaGVuIG1pdCBHcmVlbmJlcmcncyBNZXRob2RlbiBkYXJnZXN0ZWxsdC4gCgoKIyM0LjEgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBkaWUgV29ydHN0ZWxsdW5nIGRlcyBBZGpla3RpdnMgdW5kIE5vbWVuCgpOYWNoIHZvcmhlcmlnZXIgQW5hbHlzZSB3aXNzZW4gd2lyLCBkYXNzIGVzIGluc2dlc2FtdCAyMCBTcHJhY2hlbiBlaW5lIFNWTy1Xb3J0Zm9sZ2UgaGFiZW4gdW5kIDYgU3ByYWNoZW4gZWluZSBTT1YtV29ydGZvbGdlIGhhYmVuLiBBdcOfZXJkZW0gaXN0IGRhcyBBZGpla3RpdiB2b3IgZGVtIE5vbWVuIGluIDE3IFNwcmFjaGVuLCBpbiA3IFNwcmFjaGVuIGRhcyBOb21lbiB2b3IgZGVtIEFkamVrdGl2IHVuZCBpbiAyIFNwcmFjaGVuIGdpbHQgYmVpZGVzLiBBYmVyIHdpZSBkaWVzZSBWZXJ0ZWlsdW5nZW4gbWl0IGVpbmFuZGVyIHZlcmJpbmRlbiBzaW5kLCB3aXJkIGhpZXIgbWl0IGVpbmFuZGVyIHZlcmdsaWNoZW4uIAoKYGBge3J9CkZvbGdlMSA8LSB0YWJsZShEYXRlbiRXb3J0Zm9sZ2UsIERhdGVuJEFkamVrdGl2Lk5vbWVuKQpGb2xnZTEKYGBgCgpEdXJjaCBkaWUgRnVua3Rpb24gInRhYmxlKCkiIGJla29tbWVuIHdpciBlaW5lIFRhYmxlIHZvbiBkZW0gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBXb3J0c3RlbGx1bmcgZGVzIEFkamVrdGl2cyB1bmQgTm9tZW4uIERpZSBkb21pbmFudGUgT3JkZXIgaXN0IGhpZXIgIlNWTy1Xb3J0Zm9sZ2VuICsgQWRqZWt0aXYgdm9yIE5vbWVuIi4gIAoKYGBge3J9CmJhcnBsb3QgKEZvbGdlMQogICAgICAgICAsIG1haW4gPSAiWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZApkaWUgV29ydHN0ZWxsdW5nIGRlciBBZGpla3RpdmUgdW5kIE5vbWVuIgogICAgICAgICApCmBgYAoKRGllIEZ1bmt0aW9uICJiYXJwbG90KCkiIHplaWd0IHVucyBlaW5lIHZpc3VlbGxlIERhcnN0ZWxsdW5nIMO8YmVyIGRpZSBWZXJ0ZWlsdW5nLiBIaWVybWl0IHNlaGVuIHdpciwgZGFzcyBkaWUgV29ydHN0ZWxsdW5nICJBZGpla3RpdiB2b3IgTm9tZW4iIGRpZSB2ZXJicmVpdGVydGUgT3JkZXIgaXN0LiAgCgoKYGBge3J9Cm1vc2FpY3Bsb3QoRm9sZ2UxCiAgICAgICAgICAgLCBjb2xvciA9IHJhaW5ib3coMykKICAgICAgICAgICAsIHhsYWIgPSAiV29ydGZvbGdlIgogICAgICAgICAgICwgeWxhYiA9ICJXb3J0c3RsbHVuZyBkZXIgQWRqZWt0aXYgdW5kIE5vbWVuIgogICAgICAgICAgICwgbWFpbiA9ICJadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIApkZW4gV29ydHN0ZWxsdW5nZW4gZGVyIEFkamVrdGl2ZSB1bmQgTm9tZW4iKQpgYGAKCkRpZSB2aXN1ZWxsZSBEYXJzdGVsbHVuZyBtaXQgZGVyIEZ1bmt0aW9uICJtb3NhaWNwbG90KCkiIHplaWd0IGVpbmUga2xhcmUgVmVydGVpbHVuZy4gQWxsZSByb3RlIEZsw6RjaGUgc2luZCBmw7xyIGRpZSBXb3J0c3RlbGx1bmcgIkFkamVrdGl2IHZvciBOb21lbiIsIGFsbGUgZ3LDvG5lIEZsw6RjaGUgc2luZCBmw7xyIGRpZSBXb3J0c3RlbGx1bmcgIk5vbWVuIHZvciBBZGpla3RpdiIgdW5kIGJsYXVlIEZsw6RjaGUgc2luZCBmw7xyIGRpZSAiYmVpZGVzIi4gQXXDn2VyZGVtIHNlaGVuIHdpciBMaW5rc2VpdGUgZGllIFNPViBTcHJhY2hlbiBzaW5kIHVuZCBSZWljaHQgU2VpdGUgZGllIFNWTyBTcHJhY2hlbiBzaW5kLiAKCgpgYGB7cn0KY2hpc3EudGVzdChGb2xnZTEpCmBgYAoKRGllc2Ugc3RhdGlzdGlzY2hlIEFuYWx5c2UgImNoaXNxLnRlc3QoKSIgemVpZ3QgdW5zLCBkYXNzIGRpZSBQLVZhbHVlIHZvbSBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgQWRqZWt0aXZlbiB1bmQgTm9tZW4gMC41MjQ5IGlzdC4gRGEgZGllc2UgUC1WYWx1ZSA+IDAuMDUgaXN0LCBiZWRldXRldCBkZXIgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIFdvcnRmb2xnZW4gdW5kIFdvcnRzdGVsbHVuZ2VuIGRlciBBZGpla3RpdmUgdW5kIE5vbWVuIHZvbiBkZW4gZXJob2JlbmVuIDI2IFNwcmFjaGVuIG5pY2h0IHNpZ25pZmlrYW50IGlzdC4KCgojIzQuMiBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgQXJ0aWtlbCB1bmQgTm9tZW4gClVuc2VyZSB2b3JoZXJpZ2UgQW5hbHlzZSB6ZWlndCB1bnMsIGRhc3MgZXMgaW4gaW5zZ2VzYW10IDIzIFNwcmFjaGVuIGRhcyBBcnRpa2VsIHZvciBkZW0gTm9tZW4gc3RlaHQgdW5kIG51ciBpbiB6d2VpIFNwcmFjaGVuIGRhcyBOb21lbiB2b3IgZGVtIEFydGlrZWwgaXN0LiBIaWVybWl0IHdpcmQgZGVyIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQgZGVuIEFydGlrZWwtTm9tZW4gV29ydHN0ZWxsdW5nZW4gZ2VyZWNobmV0LiAKCmBgYHtyfQpGb2xnZTIgPC0gdGFibGUoRGF0ZW4kV29ydGZvbGdlLCBEYXRlbiRBcnRpa2VsLk5vbWVuKQpGb2xnZTIKYGBgCgpEaWUgVGFiZWxsZSB6ZWlndCwgZGFzcyBkaWUgT3JkZXIgIlNWTy1Xb3J0Zm9sZ2VuICsgQXJ0aWtlbCB2b3IgTm9tZW4iIGRpZSBkb21pbmFudGUgT3JkZXIgaXN0LiAKCmBgYHtyfQptb3NhaWNwbG90IChGb2xnZTIKICAgICAgICAgICAgLCBjb2xvciA9IHJhaW5ib3coMykKICAgICAgICAsIHhsYWIgPSAiV29ydGZvbGdlbiIKICAgICAgICAsIHlsYWIgPSAiV29ydHN0ZWxsdW5nIHZvbiBBcnRpa2VsIHVuZCBOb21lbiIKICAgICAgICAsIG1haW4gPSAiWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZAogICAgICAgIGRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgQXJ0aWtlbCB1bmQgTm9tZW4gIikKYGBgCgpNaXQgZGVtIEJpbGQgc2llaHQgbWFuIGRpZSBVbnRlcnNpZWRlbiwgZGFzcyByb3RlIEZsw6RjaGUgZGllICJBcnRpa2VsIHZvciBkZW0gTm9tZW4iIHNpbmQsIGJsYXVlIEZsw6RjaGUgZGllc2UgbmljaHQga2xhciBTcHJhY2hlIGlzdCwgdW5kIGdyw7xuZSBGbMOkY2hlIGRpZSAiTm9tZW4gdm9yIEFydGlrZWwiIFNwcmFjaGUgc2luZC4gCgoKYGBge3J9CmNoaXNxLnRlc3QoRm9sZ2UyKQpgYGAKCiJDaGlzcS50ZXN0KCkiIHplaWd0LCBkYXNzIGRpZSBQLVZhbHVlIHZvbSBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgQXJ0aWtlbCB1bmQgTm9tZW4gMC4xMzgzIGlzdCwgbsOkbWxpY2ggUC1WYWx1ZSA+IDAuMDUuIERpZXMgYmVkZXV0ZXQsIGRlciBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIFdvcnRzdGVsbHVuZ2VuIGRlciBBcnRpa2VsIHVuZCBOb21lbiB2b24gZGVuIGVyaG9iZW5lbiAyNiBTcHJhY2hlbiBuaWNodCBzaWduaWZpa2FudCBpc3QuIAoKCiMjNC4zIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQgZGVuIFdvcnRzdGVsbHVuZ2VuIGRlciBGYXJiZSB1bmQgTm9tZW4gCgpEaWUgVGFiZWxsZSB2b24gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgRmFyYmUgdW5kIE5vbWVuIHplaWd0IHVucywgZGFzcyBkaWUgZG9taW5hbnRlIE9yZGVyICJTVk8tV29ydGZvbGdlbiArIEZhcmJlIHZvciBOb21lbiIgaXN0LiAKCmBgYHtyfQpGb2xnZTMgPC0gdGFibGUoRGF0ZW4kV29ydGZvbGdlLCBEYXRlbiRGYXJiZS5Ob21lbikKRm9sZ2UzCmBgYAoKYGBge3J9Cm1vc2FpY3Bsb3QgKEZvbGdlMwogICAgICAgICwgY29sb3IgPSByYWluYm93KDIpCiAgICAgICAgLCB4bGFiID0gIldvcnRmb2xnZW4iCiAgICAgICAgLCB5bGFiID0gIldvcnRzdGVsbHVuZyB2b24gRmFyYmUgdW5kIE5vbWVuIgogICAgICAgICwgbWFpbiA9ICJadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kCmRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgRmFyYmUgdW5kIE5vbWVuICIpCmBgYAoKQXVmIGRlbSBCaWxkIHNpbmQgYWxsZSByb3RlbiBGbMOkY2hlbiBkaWUgU3ByYWNoZW4sIGluIGRlbmVuIEZhcmJlIHZvciBOb21lbiBzaW5kLCB1bmQgYmxhdWVuIEZsw6RjaGVuIGRpZSBTcHJhY2hlbiwgaW4gZGVuZW4gTm9tZW4gdm9yIEZhcmJlIHN0ZWh0LiAKCmBgYHtyfQpjaGlzcS50ZXN0KEZvbGdlMykKYGBgCgpEaWUgUC1WYWx1ZSB2b24gZGVyIHN0YXRpc3Rpc2NoZW4gQW5hbHlzZSAiY2hpc3EudGVzdCgpIiBpc3QgMC43MjcuIERhcyBiZWRldXRldCwgZGVyIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQgZGVuIFdvcnRzdGVsbHVuZ2VuIGRlciBBZGpla3Rpdi1GYXJiZSB1bmQgTm9tZW4gdm9uIGRlbiBlcmhvYmVuZW4gMjYgU3ByYWNoZW4gbmljaHQgc2lnbmlmaWthbnQgaXN0LCBkYSBwLVZhbHVlID4gMC4wNSBpc3QuICAKCgojIzQuNCBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgTnVtZXJhbGUgdW5kIE5vbWVuIAoKRGllIHZvcmhlcmlnZSBBbmFseXNlIHplaWd0LCBkYXNzIGRhcyBOdW1lcmFsZSB2b3IgZGVtIE5vbWVuIGluIGFsbGVuIGVyaG9iZW5lbiBTcHJhY2hlbiBzdGVodC4gRGFoZXIgaGF0IGRpZSBUYWJlbGxlIHZvbiBkZW4gV29ydGZvbGdlbiB1bmQgV29ydHN0ZWxsdW5nIHZvbiBOdW1lcmFsZSB1bmQgTm9tZW4gbnVyIHp3ZWkgVmVydGVpbHVuZ2VuLiAKCmBgYHtyfQpGb2xnZTQgPC0gdGFibGUoRGF0ZW4kV29ydGZvbGdlLCBEYXRlbiROdW1lcmFsLk5vbWVuKQpGb2xnZTQKYGBgCgpEaWUgT3JkZXIgIlNWTy1Xb3J0Zm9sZ2VuICsgTnVtZXJhbGUgdm9yIE5vbWVuIiBpc3QgZGllIGRvbWluYW50ZSBPcmRlci4gCgpgYGB7cn0KbW9zYWljcGxvdCAoRm9sZ2U0CiAgICAgICAgLCB4bGFiID0gIldvcnRmb2xnZW4iCiAgICAgICAgLCB5bGFiID0gIldvcnRzdGVsbHVuZyB2b24gTnVtZXJhbGUgdW5kIE5vbWVuIgogICAgICAgICwgbWFpbiA9ICJadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kCmRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgTnVtZXJhbGUgdW5kIE5vbWVuICIpCmBgYAoKYGBge3J9CmNoaXNxLnRlc3QoRm9sZ2U0KQpgYGAKCkRpZXNlIHN0YXRpc3Rpc2NoZSBBbmFseXNlICJjaGlzcS50ZXN0KCkiIHplaWd0IHVucywgZGFzcyBkaWUgUC1WYWx1ZSBmw7xyIGRlbiBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIGRlbiBXb3J0c3RlbGx1bmdlbiBkZXIgTnVtZXJhbGUgdW5kIE5vbWVuIDAuMDA2MDQgaXN0LiBEaWUgUC1WYWx1ZSA8IDAuMDEgYmVkZXV0ZXQsIGRhc3MgZGllc2VyIFp1c2FtbWVuaGFuZyB2b24gZGVuIGVyaG9iZW5lbiAyNiBTcHJhY2hlbiBzaWduaWZpa2FudCBpc3QuIAoKCiMjNC41IFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQgZGVuIFdvcnRzdGVsbHVuZ2VuIHZvbiBHZW5pdGl2IHVuZCBOb21lbgoKRGllIHZvcmhlcmlnZSBBbmFseXNlIHplaWd0LCBkYXNzIGRlciBHZW5pdGl2IGluIDkgU3ByYWNoZW4gdm9yIGRlbSBOb21lbiBzdGVodCB1bmQgaW4gMTUgU3ByYWNoZW4gamVkb2NoIG5hY2ggZGVtIE5vbWVuIHN0ZWh0IHVuZCBpbiB6d2VpIFNwcmFjaGVuIGRpZXNlIFJlaWhlbmZvbGdlIG5pY2h0IGJla2FubnQgaXN0LiBIaWVybWl0IHdpcmQgZGVyIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZW4gV29ydGZvbGdlbiB1bmQgZGVuIFdvcnRzdGVsbHVuZ2VuIHZvbiBHZW5pdGl2IHVuZCBOb21lbiBnZXJlY2huZXQuIAoKYGBge3J9CkZvbGdlNSA8LSB0YWJsZShEYXRlbiRXb3J0Zm9sZ2UsIERhdGVuJE11c2lrLk1vemFydCkKRm9sZ2U1CmBgYAoKRGllIFRhYmVsbGUgemVpZ3QsIGRhc3MgZGllIE9yZGVyICJTVk8tV29ydGZvbGdlbiArIE5vbWVuIHZvciBHZW5pdGl2IiBkaWUgZG9taW5hbnRlIE9yZGVyIGlzdC4gCgpgYGB7cn0KbW9zYWljcGxvdChGb2xnZTUKICAgICAgICAgICAsIGNvbG9yID0gcmFpbmJvdygzKQogICAgICAgICAgICwgeGxhYiA9ICJXb3J0Zm9sZ2VuIgogICAgICAgICAgICwgeWxhYiA9ICJXb3J0c3RlbGx1bmcgdm9uIEdlbml0aXYgdW5kIE5vbWVuIgogICAgICAgICAgICwgbWFpbiA9ICJadXNhbW1lbmhhbmcgendpc2NoZW4gZGVuIFdvcnRmb2xnZW4gdW5kIApkZW4gV29ydHN0ZWxsdW5nZW4gdm9uIEdlbml0aXYgdW5kIE5vbWVuIikKYGBgCgpHcsO8bmUgRmzDpGNoZSBpc3QgZGllIGRvbWluYW50ZSBPcmRlciAiTm9tZW4gdm9yIEdlbml0aXYiLCByb3RlIEZsw6RjaGUgaXN0IGRpZSBPcmRlciAiR2VuaXRpdiB2b3IgTm9tZW4iIHVuZCBibGF1ZSBGbMOkY2hlIHNpbmQgZGllIG5pY2h0IGtsYXJlIFNwcmFjaGUgZsO8ciBkaWVzZSBXb3J0c3RlbGx1bmcuIEF1w59lcmRlbSBzaWVodCBtYW4gZWluZW4ga2xhcmVuIFVudGVyc2NoaWVkIGbDvHIgZGllc2UgV29ydHN0ZWxsdW5nZW4gendpc2NoZW4gU09WLVNwcmFjaGVuIHVuZCBTVk8tU3ByYWNoZW4uIEbDvHIgZGllIFNPVi1TcHJhY2hlbiBpc3QgZGllICJHZW5pdGl2IHZvciBOb21lbiIgZGllIGRvbWluYW50ZSBPcmRlciwgamVkb2NoIGlzdCBkaWUgIk5vbWVuIHZvciBHZW5pdGl2IiBkaWUgZG9taW5hbnRlIE9yZGVyIGbDvHIgZGllIFNWTy1TcHJhY2hlbi4gCgoKYGBge3J9CmNoaXNxLnRlc3QoRm9sZ2U1KQpgYGAKCgpNaXQgZGVyIHN0YXRpc3Rpc2NoZSBBbmFseXNlICJjaGlzcS50ZXN0KCkiIGlzdCBkaWUgUC1WYWx1ZSAwLjAwNDgzMi4gV2VubiBkaWUgUC1WYWx1ZSA8IDAuMDEgaXN0LCBiZWRldXRldCBkaWVzZXIgWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlbiBXb3J0Zm9sZ2VuIHVuZCBkZW4gV29ydHN0ZWxsdW5nZW4gdm9uIEdlbml0aXYgdW5kIE5vbWVuIHZvbiBkZW4gZXJob2JlbmVuIDI2IFNwcmFjaGVuIHNpZ25pZmlrYW50IGlzdC4gRGFzIEJpbGQgdm9uIGRlciBGdW5rdGlvbiAibW9zYWljcGxvdCgpIiB6ZWlndCB1bnMgZGllc2UgV29ydHN0ZWxsdW5nIHN0YXJrIG1pdCBXb3J0Zm9sZ2VuIGFiaMOkbmdpZyBpc3QuCgoKIyMgNC42IFp1c2FtbWVuZmFzc3VuZwoKCgoKCgpgYGB7cn0KCmBgYAoKCgoKCgoKIzUuIEFsbGdlbWVpbmUgRGlza3Vzc2lvbiB1bmQgQXVzYmxpY2sKCiMjIDUuMSBLcml0aWtlbgoKSW4gdmllbGVuIMOcYmVyc2V0enVuZ3Nib2dlbiBpc3QgZGllIEJlZGV1dHVuZyB2b24gamVkZW0gV29ydCBuaWNodCBrbGFyIG1hcmtpZXJ0IG9kZXIgc29nYXIgbmljaHRzIGdlc2NocmllYmVuLCB3aWUgUGVyc2lzY2gsIEtvcmVhbmlzY2guIE1hbiBrYW5uIG51ciBtaXQgV8O2cnRlcmJ1Y2ggdW5kIEdvb2dsZSDDnGJlcnNldHplciBkaWUgQmVkZXV0dW5nIHZvbSBlaW56ZWxuZW4gV29ydCByYXVzc3VjaGVuLCBhYmVyIG1laXN0ZW5zIHdpcmQgZGFkdXJjaCB1bnNpY2hlci4gIERpZSBBcnQgdm9tIFdvcnQga2FubiBtYW4gendhciBmZXN0c3RlbGxlbiwgYWJlciBuaWNodCBkaWUgZ2VuYXVlIEJlZGV1dHVuZyB1bmQgaWhyZSBncmFtbWF0aXNjaGUgRmVpbmhlaXQuIAoKQmVpIGRlciDDnGJlcnNldHp1bmcgdm9tIFNhdHogMSIgSWNoIGtvY2hlIFN1cHBlIiB3aXJkIGRhcyBTdWJqZWt0IGluIHZpZWxlbiBTcHJhY2hlbiBuaWNodCBlaW5nZWdlYmVuLiBEZW5uIGluIG1hbmNoZW4gU3ByYWNoZW4gd2lyZCBkYXMgU3ViamVrdCAiaWNoIiBtaXQgZGVyIEVuZHVuZyB2b24gVmVyYiBtYXJraWVydC4KCkRpZSDDnGJlcnNldHp1bmdzYm9nZW4gc2luZCBhdWYgRGV1dHNjaCBnZXNjaHJpZWJlbi4gQmVpbSDDnGJlcnNldHp1bmcgdm9uIGVpbmVyIFNwcmFjaGUgaW5zIGFuZGVyZW4gU3ByYWNoZSBrYW5uIGRpZSBXb3J0c3RlbGx1bmcgaW0gU2F0eiB2b24gZGVyIGVpbmdlZ2ViZW5lbiBTcHJhY2hlIGJlZWluZmx1c3Nlbi4gRsO8ciB3ZWl0ZXJlIEZvcnNjaHVuZyBrYW5uIG1hbiB2aWVsbGVpY2h0IG1pdCBUcmFuc2tyaXB0aW9uZW4gdm9uIFRvbmF1Zm5haG1lbiBvZGVyIHZvbiBmcmVpIGdlc3Byb2NoZW5lbiBHZXNwcsOkY2hlbiBhcmJlaXRlbi4gQWxsZXJkaW5ncyBrYW5uIG1hbiBzYWdlbiwgZGFzcyBkaWUgRGF0ZW5lcmhvYmVuIG1pdCDDnGJlcnNldHp1bmdzYm9nZW4gc2VociBlZmZla3RpdiBpc3QuIAoKCiMjIDUuMiBBdXNibGlja2VuCgpXZW5uIG1hbiBkaWUgV29ydHN0ZWxsdW5nIG1pdCBkaWVzZW4gZsO8bmYgU8OkdHplbiDDvGJlciBkaWVzZSBlcmhvYmVuZW4gMjYgU3ByYWNoZW4gZGlza3V0aWVyZW4sIGJla29tbXQgbWFuIGVpZ2VudGxpY2ggbmljaHQgYWxsZSBXb3J0c3RlbGx1bmdzbcO2Z2xpY2hrZWl0ZW4gdm9uIGRpZXNlbiBTcHJhY2hlbi4gRWluZSBBdXNuYWhtZSBpc3QgenVtIEJlaXNwaWVsIENoaW5lc2lzY2gsIGRpZSBXb3J0c3RlbGx1bmcgaW0gQ2hpbmVzaXNjaGVuIGthbm4gc293b2hsICJTdWJqZWt0LVZlcmItT2JqZWt0IChTVk8pIiBzZWluLCBhbHMgYXVjaCAiU3ViamVrdC1PYmpla3QtVmVyYiAoU09WKSIgc2Vpbi4gRGllIFdvcnRmb2xnZSBpbSBjaGluZXNpc2NoZW4gU2F0eiBrYW5uIGRpZSBCZWRldXR1bmcgdm9uIFNhdHogc3Rhcmsgw6RuZGVybiwgd2llIGluIGZvbGdlbmRlbiBTw6R0emVuIG5hY2ggSmlhbmcgKDIwMDkpOgoKLQkxKSBTdWJqZWt0ICsgTmVnYXRpb24gKyBWZXJiICsgT2JqZWt0Ci0JU2ljaHVhbiByZW4gYnUgcGEgbGEKLQlTaWNodWFuIHBlcnNvbiBub3QgZmVhciBzcGljeQotCSJTaWNodWFuZXJzIGRvIG5vdCAoZmVhciB0aGVpciBmb29kKSBiZWluZyBzcGljeS4iCgotCTIpIFN1Ympla3QgKyBPYmpla3QgKyBOZWdhdGlvbiArIFZlcmIKLQlIdWJlaSByZW4gbGEgYnUgcGEKLQlIdWJlaSBwZXJzb24gc3BpY3kgbm90IGZlYXIKLQkiKFRoZWlyIGZvb2QpIGJlaW5nIHNwaWN5IGlzIG5vdCBmZWFyZnVsIG1hdHRlciB0byBIdWJlaW5lcnMuIgoKLQkzKSBTdWJqZWt0ICsgVmVyYiArIE5lZ2F0aW9uICsgT2JqZWt0Ci0JSHVuYW4gcmVuIHBhIGJ1IGxhCi0JSHVuYW4gcGVyc29uIGZlYXIgbm90IHNwaWN5Ci0JIkh1bmFuZXJzIGZlYXIgdGhhdCAodGhlaXIgZm9vZCkgaXMgbm90IHNwaWN5LiAiCgpEaWUgQmVpc3BpZWxlIG5hY2ggSmlhbmcgKDIwMDkpIHplaWd0LCBkYXNzIGVzIGluIENoaW5lc2lzY2hlbiBpbiBOZWdhdGlvbiBTYXR6IHZlcnNjaGllZGVuZSBXb3J0Zm9sZ2VuIGdlYmVuIGthbm4uIEbDvHIgZGllIHdlaXRlcmUgRm9yc2NodW5nIGlzdCBkYXMgVGhlbWEgIk5lZ2F0aW9uIGltIFNhdHoiIHNlaHIgaW50ZXJlc3NhbnQsIHdpZSB2aWVsZSBNw7ZnbGljaGtlaXRlbiBiZWkgTmVnYXRpb24gaW4gamVkZXIgU3ByYWNoZSBnaWJ0IHVuZCB3aWUgZGllIFp1c2FtbWVuaGFuZ2VuIHVuZCBWZXJ0ZWlsdW5nZW4gdm9uIFNwcmFjaGVuIGRlciBXZWx0IHNpbmQuIAoKCgojTGl0ZXJhdHVyLSB1bmQgUXVlbGxlbnZlcnplaWNobmlzCgotIENyb2Z0IFcuIFR5cG9sb2d5IGFuZCB1bml2ZXJzYWxzW01dLiBDYW1icmlkZ2UgVW5pdmVyc2l0eSBQcmVzcywgMjAwMi4KLSBHcmVlbmJlcmcgSiBILiBTeW5jaHJvbmljIGFuZCBkaWFjaHJvbmljIHVuaXZlcnNhbHMgaW4gcGhvbm9sb2d5W0pdLiBMYW5ndWFnZSwgMTk2NiwgNDIoMik6IDUwOC01MTcuCi0gR3JlZW5iZXJnIEpvc2VwaCBILiBMYW5ndWFnZSB1bml2ZXJzYWxzLCB3aXRoIHNwZWNpYWwgcmVmZXJlbmNlIHRvIGZlYXR1cmUgaGllcmFyY2hpZXNbSl0uIFRoZSBIYWd1ZSwgTW91dG9uLCAxOTY2LgotIEhhc3BlbG1hdGggTS46IFNwcmFjaGVuIGRlciBXZWx0LiBNYXgtUGxhbmNrLUluc3RpdHV0IGbDvHIgZXZvbHV0aW9uw6RyZSBBbnRocm9wb2xvZ2llICgxOTk5LTIwMDUpIGh0dHA6Ly9ob21lLnVuaS1sZWlwemlnLmRlL211ZWxsZXJnL3N1L2hhc3BlbG1hdGgucGRmIChhdWZnZXJ1ZmVuIGFtIDE0LjAzLjIwMTgpCi0gSGFhcm1hbm4gSC4gRWxlbWVudGFyZSBXb3J0b3JkbnVuZyBpbiBkZW4gU3ByYWNoZW4gZGVyIFdlbHQ6IERva3VtZW50YXRpb24gdW5kIEFuYWx5c2VuIHp1ciBFbnRzdGVodW5nIHZvbiBXb3J0Zm9sZ2VtdXN0ZXJuW01dLiBCdXNrZSBWZXJsYWcsIDIwMDQuCi0gSmlhbmcgVy4gQWNxdWlzaXRpb24gb2Ygd29yZCBvcmRlciBpbiBDaGluZXNlIGFzIGEgZm9yZWlnbiBsYW5ndWFnZVtNXS4gV2FsdGVyIGRlIEdydXl0ZXIsIDIwMDkuCi0gS2FobCBULCBNZXR6ZWx0aW4gTS4gU3ByYWNodHlwb2xvZ2llOiBlaW4gTWV0aG9kZW4tdW5kIEFyYmVpdHNidWNoIGbDvHIgQmFsa2Fub2xvZ2VuLCBSb21hbmlzdGVuIHVuZCBhbGxnZW1laW5lIFNwcmFjaHdpc3NlbnNjaGFmdGxlcltNXS4gSGFycmFzc293aXR6IFZlcmxhZywgMjAxNS4KLSBLb3Rvd3NraSBTLiBBZGplY3RpdmFsIE1vZGlmaWNhdGlvbiBhbmQgT3JkZXIgUmVzdHJpY3Rpb25zOiBUaGUgSW5mbHVlbmNlIG9mIFRlbXBvcmFyaW5lc3Mgb24gUHJlbm9taW5hbCBXb3JkIE9yZGVyW01dLiBXYWx0ZXIgZGUgR3J1eXRlciBHbWJIICYgQ28gS0csIDIwMTYuCi0gS3dvbiBIIEouIEVpbmUga29udHJhc3RpdmUgQmVzY2hyZWlidW5nIGRlcyBTZXJib2tyb2F0aXNjaGVuIHVuZCBkZXMgS29yZWFuaXNjaGVuOiB1bnRlciBiZXNvbmRlcmVyIEJlcsO8Y2tzaWNodGlndW5nIGRlciBXb3J0Zm9sZ2VbRF0uLCAxOTk2LgotIFBheW5lIEosIEh1ZGRsZXN0b24gUiBELiBOb3VucyBhbmQgbm91biBwaHJhc2VzW0pdLiAyMDAyLgotIFN6d2VkZWsgQSBKLiBUaGUgdGhlbWF0aWMgc3RydWN0dXJlIG9mIHRoZSBzZW50ZW5jZSBpbiBFbmdsaXNoIGFuZCBQb2xpc2g6IFNlbnRlbmNlIHN0cmVzcyBhbmQgd29yZCBvcmRlcltNXS4gUGV0ZXIgTGFuZywgMjAxMS4KLSBXb3J0c3RlbGx1bmcgaW0gU3ByYWNodmVyZ2xlaWNoOiAoZGV1dHNjaC1uaWVkZXJsw6RuZGlzY2gtcG9sbmlzY2gtdW5nYXJpc2NoKSBbTV0uIEp1bGl1cyBHcm9vcywgMjAwMS4KCi0gS29vcmRpbmF0ZSBmw7xyIGRpZSBlcmhvYmVuZW4gU3ByYWNoZW46IGh0dHA6Ly93YWxzLmluZm8vbGFuZ3VvaWQgKGF1ZmdlcnVmZW4gYW0gMjIuMDIuMjAxOCkKLSBOYWNoc2NobGFnZW4gdm9uIFI6IGh0dHBzOi8vcnNlZWsub3JnIAoK